本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルやディレクトリ作成時のパーミッション(アクセス権)を設定する「umask」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルやディレクトリ作成時のパーミッション(アクセス権)を設定する「umask」コマンドです。
「umask」はファイルやディレクトリを作成する際のパーミッションを設定するコマンドです。
通常は、各ディストリビューションの管理ポリシーに従ったパーミッションの値がデフォルトで設定されているため、umaskの値をユーザーが変更する必要はあまりないでしょう。
umaskはファイルやディレクトリの新規作成時の設定を変えるコマンドです。既存のファイルやディレクトリのパーミッションを変更する際には「chmod」コマンド(連載第14回)を使用します。パーミッションについては、Linux再入門第9回「ファイルのパーミッション(許可属性)とは?」でも取り上げています。
なお、umaskはbashの内部コマンド(ビルトインコマンド、シェルコマンド)であるため、「man」コマンドではなく、「help」コマンドで詳細を表示できます。
umask [オプション] [値]
※[ ]は省略可能な引数を示しています。
短いオプション | 意味 |
---|---|
-p | 値を指定しなかった場合、現在の設定値を「umask 値」の形式で表示する |
-S | 現在の設定値をシンボルモード(「rwx」などの文字列)で表示する(※1) |
※1 値を指定した場合、現在の設定を指定した値に変更した上で表示する。
Linuxでファイルやディレクトリを作成する際、基本的なパーミッションは制限が最も少ない状態になっています。ファイルは「所有者」「グループ」「その他」ともに読み書き(rw)が可能な「666」(rw-rw-rw-)、ディレクトリはさらに実行(x)も可能な「777」(rwxrwxrwx)です。umaskはここに制限を加える形でパーミッションを指定します。
例えば、umaskに「002」(CentOS環境におけるデフォルト設定、※2)を設定した場合、ファイル作成時のパーミッションは「664」(666−002=664)になります。これは、所有者とグループは読み書き可能、その他のユーザーは読み出しのみ可能というパーミッションです(rw-rw-r--)。
同様に、ディレクトリ作成時のパーミッションは「775」(777−002=775)になります(rwxrwxr-x)。
※2 Ubuntu 18.04 LTSの場合は「022」が設定されている。
「umask」を実行すると、現在の設定を表示します(画面1)。設定値を4桁で表示し、1桁目は「0」で固定です(※3)。
※3 画面1ではパーミッションを0〜7の数字4桁で表している。この場合、2〜4桁目が本文中で触れた所有者、グループ、他人に対するパーミッションであり、1桁目は特殊な属性を示す。通常はファイル、ディレクトリともに1桁目に0が設定されている。1桁目が4の場合は「set-user-ID(SUID)」を意味し、2の場合は「set-group-ID(SGID)」となる。SUIDは実行時に所有者の権限を、SGIDは所有グループの権限を引き継ぐという意味だ(応用力”をつけるためのLinux再入門 第11回)。ディレクトリに対して1桁目に1を設定した場合には「削除制限」、ファイルに設定した場合は「STICKY属性」という意味になる。
umask
(現在の設定値を表示する)
umaskの値を「022」に設定したい場合は「umask 022」のように指定します(画面2)。
「umask u=rwx,g=rx,o=rx」(u:ユーザー、g:グループ、o:その他)のように文字列(シンボル)を使っても設定できます。この場合、「与える最大の権限」を指定します。「umask u=rwx,g=rx,o=rx」とすると、ファイルのパーミッションは「rw-rw-rw(666)」と共通する部分だけが有効になるため、「rw-r--r--」になります。同じようにディレクトリのパーミッションは「rwxr-xr-x」となります。つまり、「umask u=rwx,g=rx,o=rx」は「umask 022」相当です。
シンボルによる指定はめんどうに見えますが、例えば「umask g=rwx」や「umask o=」のように、部分的な指定が分かりやすくなります(※4)。
※4 数値による指定の場合、「umask 2」は「umask 002」相当、「umask 20」は「umask 020」相当になる。
なお、現在の設定をシンボルで表示するには「-S」オプションを使用します。
umask 022
(umaskの値を022にする)
umask u=rwx,g=rx,o=rx
(umaskの値を022にする)
umask g=
(umaskの「g」の値を「7」にする。グループに対し権限を与えない設定になる)
umask -S
(現在の設定をシンボルで表示する)
umask -S 020
(umaskの値を020にして、シンボルで表示する)
画面3ではumaskが「002(0002)」の場合にファイルとディレクトリを作成し、作成したファイルの属性を表示しています。
画面4では同様に「000(0000)」の場合を、画面5では「777(0777)」の場合を表示しました。この場合、一切の権限がなくなります。
西村 めぐみ(にしむら めぐみ)
元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。
Copyright © ITmedia, Inc. All Rights Reserved.