kazmax - Linux で自宅サーバー

デフォルトのアクセス権 - umask

新規にファイルや、ディレクトリを作成したとき、いつも同じアクセス権になると思います。これは、umaskという仕組みでデフォルトのアクセス権が設定されているためです。

Last Update : 2013年07月30日

デフォルトのアクセス権 - umask 項目

  1. 現在のumask値を確認する
  2. umaskを設定する
  3. umaskの計算の仕方
  4. umaskアクセス権早見表
  5. 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(書き込み権限)が追加されている
Linux 基礎知識 関連記事