Linuxコマンド辞典 umask(ユーザ/グループ管理)

新しくファイル・ディレクトリを作成時点に設定されるマスク値の表示及び変更するumaskコマンドについて解説。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

UNIXシステムでは、パーミッションによりアクセス権の制御を行っていますが、この基準となるのがumaskの値です。

umaskコマンドを使用して、ファイルやディレクトリのユーザー所有者及びグループ所有者を変更できます。マスクの値は4桁の8進数値で、ファイルは666(0666)からマスク値を、ディレクトリは777(0777)からマスク値を引いた値がデフォルトのアクセス権として適用されます。コマンドのみの場合は、現在のマスク値が表示されます。

デフォルトの「022」以外を標準umask値にするには、シェル起動ファイル(.bashrc)などに記述します。また、親プロセスでumask値を持っている場合は、子プロセスでumask値が引き継がれます。

書式

$ chown [オプション] [umask値]
-pumask値を数値で表示する。umask値を指定した場合は設定する。
-Sumask値を文字で表示する。umask値を指定した場合は設定する。
オプション一覧表

デフォルトのマスク値

/etc/profileで設定されている。

ディストリビューションごとのumask値

ディストリビューション管理者一般ユーザ
RHEL00220022
CentOS00220022
Vine Linux00220022
Ubuntu00220002
Debian GNU/Linux00220022
Plamo Linux00220022

マスク値とその効果

マスク値を指定することによりどのような効果があるのかファイルの場合とディレクトリの場合で記載しています。

ファイルの場合

マスク効果
400所有者はファイルを読み取れない
200所有者はファイルに書き込めない
100所有者は実効できない
040所有グループのユーザは読み取れない
020所有グループのユーザは書き込めない
010所有者グループのユーザは実効できない
004その他のユーザは読み取れない
002その他のユーザは書き込めない
001その他のユーザは実行できない

ディレクトリの場合

マスク効果
400所有者は読み取れない
200所有者は書き込めない
100所有者はアクセスできない
040所有グループは読み取れない
020所有グループは書き込めない
010所有者グループはアクセスできない
004その他のユーザは読み取れない
002その他のユーザは書き込めない
001その他のユーザは実行できない

サンプル:現在のマスク値

現在のマスク値が0002であるため、ファイルであれば「0666-0002=0664」となり、ディレクトリであれば「0777-0002=0755」がデフォルトのアクセス権となります。

$ umask

実行結果

[centos@xxx ~]$ umask
0002
[centos@xxx ~]$ 

サンプル:マスク値の設定

マスク値を0028に設定する。マスク値が0028に設定されるとファイルであれば「0666-0028=0640」(rw-r—–)、ディレクトリは「0777-0028=0750」(rwxr-x—)となる。

$ umask 0028

実行結果

[centos@xxx work]$ umask
0002
[centos@xxx work]$ umask 0027
[centos@xxx work]$ umask
0027
[centos@xxx work]$ mkdir sample
[centos@xxx work]$ ls -l
total 0
drwxr-x--- 2 centos centos  6 Apr 23 22:01 sample #アクセス権がrwxr-x---となる。

[centos@xxx work]$ 

umaskモードを文字形式で表示する

-Sオプションを使用することで、文字形式で表示することができる。

$ umask -S
u=rwx,g=rwx,o=rx

.bashrcに追加する

/etc/skel/.bashrcに追加するとユーザを追加するたびに設定する手間が省ける。

$ tail -l /etc/skel/.bashrc
umask 002