デフォルトのアクセス権 - umask
新規にファイルや、ディレクトリを作成したとき、いつも同じアクセス権になると思います。これは、umaskという仕組みでデフォルトのアクセス権が設定されているためです。
Last Update : 2013年07月30日
デフォルトのアクセス権 - umask 項目
1. 現在のumask値を確認する
OSにログインするとすでに umask の値がすでに設定されています。これは、/etc/bashrc (ログイン時に実行されるファイルです)の中にumaskの値をユーザーに割り当てる為の記述があるからです。
現在のumask値を確認するには、オプション無しでumaskコマンドを実行します。
$ umask 0002
値の意味は後で説明しますが、現在のumask値は「0002」という事がわかります。
「-S」オプションを使うとディレクトリのデフォルトのアクセス権をシンボルモードで確認することができます。
$ umask -S u=rwx,g=rwx,o=rx
memo
umask値はアカウントごとに設定されます。
2. umaskを設定する
umaskを設定するには、umaskコマンドに、umask値を記述して実行します。
例) umask値を0022にする場合
$ umask 0002 ← 現在は0002 $ umask 0022 ← umask値を0022にする $ umask 0022 ← umask値が0022になった
3. umaskの計算の仕方
オプションとしてわたすumask値の計算の仕方を説明します。
ファイルと、ディレクトリで計算の仕方が異なりますが、デフォルトのアクセス権をどうしたいかがわかれば計算できます。
ファイルは「666」から、ディレクトリは「777」から、デフォルトのアクセス権(数値モード)を引けばumask値をもとめられます。 (ファイルのumask値は例外があるので表を参考にしてください。また、ファイルは初期値に実行権限をつける事はできません。)
ディレクトリのデフォルトのアクセス権を755にしたい場合は、
777-755=022
となり、
umask 022 ※ umask 0022と数値部分を4ケタで表してもよい
でディレクトリのデフォルトのアクセス権を755にする事ができます。
4. umaskアクセス権早見表
指定したumask値に対して、作成されたファイル、ディレクトリの権限の対比表を作成しました。
umask値 | ディレクトリのデフォルトアクセス権 | ファイルのデフォルトアクセス権 |
0 | rwx | rw- |
1 | rw- | rw- |
2 | r-x | r-- |
3 | r-- | r-- |
4 | -wx | -w- |
5 | -w- | -w- |
6 | --x | --- |
7 | --- | --- |
5. umaskをシンボルモードで指定する
以下のようにシンボルモードでumask値を実行する事もできます。ちょうどchmodコマンドのシンボルモードと似ています。
umask u=rwx,g=rwx,o=rx
memo
※作成されるファイルの実行権限部分は無視されます。
使用例
$ umask -S u=rwx,g=rwx,o=rx ← その他の部分に書き込み権限が無い $ umask u=rwx,g=rwx,o=rwx ← その他の部分もrwxを指定 $ umask -S u=rwx,g=rwx,o=rwx ← その他の部分もrwxになる $ mkdir dir $ ls -l drwxrwxrwx 2 user1 user1 4096 7月 30 09:21 dir ← ディレクトリのその他の権限部分のデフォルトのアクセス権がrwxになる
$ umask u=rwx,g=rwx,o=rx ← その他の部分からwをはずす $ umask -S u=rwx,g=rwx,o=rx $ umask 0002 $ mkdir dir2 $ ls -l drwxrwxr-x 2 user1 user1 4096 7月 30 09:21 dir2 ← その他の部分からw(書き込み権限)がはずれている
umaskのシンボルモードでも、chmodのシンボルモードのように、アクセス権の追加や削除もできます。
$ umask -S u=rwx,g=rwx,o=rx $ umask o+w ← その他の部分にw(書き込み権限)を追加 $ umask -S u=rwx,g=rwx,o=rwx ← その他の部分にw(書き込み権限)が追加されている