この記事のゴール
- umask値について説明できるようになる。
- umask値のuが一体なにを表しているのか解明する。
umask値ってなに?
一言でいうと、ファイルとディレクトリのデフォルト権限を決めるのに使われる値です。
umask値のuってなんだろね?
Google検索した結果、オラクルのSolaris関連のドキュメントにこんなことが書いてありました。(ほかにリソースが見当たらなかったのです。マニュアルにもなかった)
When you create a file or directory, the default file permissions assigned to the file or directory are controlled by the user mask. The user mask is set by the umask command in a user initialization file.
これを見る限り、どうやらumaskはuser maskの略らしいですね。ユーザ(user)がファイルを作成するとき、ファイルのデフォルト権限を決めるのに使われるマスク(mask)だからuser mask。やったー。謎解明だー。
umask値の使われ方
先ほどちらっと出てきたように、umaskはマスクです。マスクは、コーヒーフィルタのようなもので、フィルタにかかったものを弾きます。umaskで弾かれる前のピュアなファイルの権限は666で、ディレクトリの権限は777です。ですが、umaskでいくつかの権限が弾かれることによって、最終的なデフォルト権限に変化します。
- ファイルの場合
666 rw-rw-rw- (umaskで弾かれる前のピュアな権限)
022 ----w--w- (umask値)
↓ ↓
644 rw-r--r-- (デフォルト権限)
umaskで、グループユーザのw(書き込み権限)と、その他ユーザのw(書き込み権限)が弾かれています。最終的なファイルのデフォルト権限は644になり、グループユーザとその他ユーザはr(読み込み権限)のみ許可されます。
- ディレクトリの場合
777 rwxrwxrwx (umaskで弾かれる前のピュアな権限)
022 ----w--w- (umask値)
↓ ↓
755 rwxr-xr-x (デフォルト権限)
umaskで、グループユーザのw(書き込み権限)と、その他ユーザのw(書き込み権限)が弾かれています。最終的なファイルのデフォルト権限は755になり、グループユーザとその他ユーザはr(読み込み権限)とx(実行権)が許可されます。
umaskコマンドでumask値の確認と設定ができる
umaskコマンドで、umask値の確認と設定ができます。umask値はrootユーザと一般ユーザでは異なります。rootユーザは022で、一般ユーザは002です。先ほどの説明では、rootユーザのumask値を使用しました。
- rootユーザのumask値の確認
# umask
0022
- 一般ユーザのumask値の確認
$ umask
0002
- umask値の設定
以下のコマンドでumask値を設定できるそうですが、僕は使ったことがありません。うーん、使うタイミングあるかな。
$ umask 設定値