umaskは新規ファイルや新規ディレクトリの作成時のアクセス権(パーミッション)を設定するコマンドだ。
umaskの説明の前にまずは、lsコマンドの-lオプションでファイルの属性を見てファイル属性について理解しよう。
ファイル属性は「-rwxrw-r--」となっており、はじめの1文字は「ファイルタイプ」で、-がファイル、dがディレクトリ、lがシンボリックリンクだ。
次からの9文字が「ファイル属性(バーミッション)」である。
ファイル属性は、3文字ごとに区切り、はじめの3文字はファイル所有者のできる権限、次の3文字はグループのできる権限、最後の3文字はゲストユーザーができる権限を表している。
xは実行ができる権限、wは書き込みができる権限、rは読み込みができる権限、-は何もできない権限だ。
つまり、「-rwxrw-r--」では所有者は、そのファイルを実行と読み書きができる、グループは読み書きが出来るが実行はできない、ゲストユーザーは読み込むことしかできないという権限である。
この権限はファイル所有者かroot権限を持つユーザーがchmodコマンドで変更できる。
umaskコマンドは、新規ファイルや新規ディレクトリを作成した時に設定するファイル属性を設定するコマンドだ。
目次
umaskコマンドの基本
コマンドの基本動作
使い方は、次のとおりだ。
$ umask
現在の新規ファイルや新規ディレクトリを作成した時に設定するファイル属性が確認できる。
属性は、3桁、または4桁の数値で表示されている。
実際に設定されている値は下位3桁を確認すればわかる。
1文字目が所有者、2文字目がグループ、3文字目がゲストユーザーの設定だ。
ここで注意したいのは、ディレクトリの場合は実行可能の設定は可能だが、ファイルの場合は実行可能に設定することはできないため、ファイルを実行可能にする場合は、後からchmodコマンドで指定する必要がある。
$ umask 設定する属性
変更可能であれば0、実行を不可にするには1、書き込みを不可にするには2、読み込みを不可にするには4でその数字の合算したものを指定する。
例えば171であれは、所有者とゲストユーザーは実行が不可でグループには実行、読み書きはできない設定となる。
ゲストユーザーのファイル属性をすべて変更できないとする場合は、次のコマンドだ。
$ umask 007
ゲストユーザーのファイル属性を操作できない設定とした。
mkdirコマンドで新規作成したディレクトリ「test」の属性は「-rwxrwx---」とゲストユーザーのファイル属性を操作できない設定で作成された。
umaskコマンドのオプションたち
オプションの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション-S
属性をシンボルで指定する
-Sオプション:属性をシンボルで指定する
数字で属性を指定する場合、把握しにくい場合があり、属性をシンボルで指定することができる。
シンボルはuが所有者(user)、gがグループ(group)、oがその他ゲストユーザー(other)で、xが実行権限、rが読み取り権限、wが書き込み権限だ。
属性をシンボルで指定する書式は次のとおりだ。
$ umask -S ユーザー=属性
属性をシンボルで指定した場合は数値で指定した場合と逆になり、指定した属性に沿ったファイルが生成される。例えば新規作成されるファイルのグループ属性に書き込み権限を付加する場合は、次のコマンドだ。
$ umask -S g=w
mkdirコマンドで新規作成したディレクトリの属性は「-rwx-w-r-x」となる。
umask関連コマンド
最後にumaskコマンドに関連して、基本的なファイルの属性を部分的に変更不可にするコマンドも紹介しておく
chmodコマンド
ファイルの属性を変更する
chownコマンド
ファイルの所有者を変更する
chgrpコマンド
ファイルのグループを変更する
lsコマンド
ファイルの属性などを確認する
まとめ
ファイルのパーミッションはよく変更することがあり、chmodコマンドはchownなどと組み合わせてよく使うが、umaskを活用することで効率の良いパーミッションの変更やセキュリティ対策ができるので、ぜひ把握しておこう。
内容間違ってないですか?
umask -S u=rwx,g=w,o=rx
として、mkdirをすると、できるディレクトリの属性はdrwx-w-r-x
になります。シンボリック形式でumaskを記載した場合、8進数で記載する場合と逆の意味になります。
ArchLinuxのものですが、ドキュメンテーションにも以下のように記載されています。
> the symbolic notation value will always be the logical complement of the octal value
https://wiki.archlinux.org/title/Umask
いつもご愛読ありがとうございます。
記事に反映させていただきました。
ご指摘ありがとうございました。