Linuxにおけるumaskコマンドの使い方(デフォルトのアクセス権を変更)についてまとめました。
デフォルトのアクセス権(umaskコマンド)
umaskコマンドは、のユーザーがファイルやディレクトリを作成した際、デフォルトのパーミッションを指定するマスクを設定します。
新規作成したファイルのデフォルトパーミッションは666(rw-rw-rw-)、ディレクトリは777です。
この「デフォルトのパーミッション」と「umaskで指定されたマスクの論理否定」との論理積が、ファイルやディレクトリ作成時の最終的なパーミッションとなります。
umask値の設定にはパーミッションとして利用したくないビットを「1」として指定します。
【計算例】ファイルのデフォルトパーミッション1
umaskを所有者以外は書き込み不可の022(000 010 010)とする。
「000 010 010」の論理否定は各ビットを反転させた「111 101 101」となる。
デフォルトパーミッションは666(110 110 110)なので、最終的なパーミッションは
「110 110 110」 AND 「111 101 101」 = 110 100 100 (644)
となります。
【計算例】ディレクトリのデフォルトパーミッション
umaskを所有者以外は書き込み不可の022(000 010 010)とする。
「000 010 010」の論理否定は各ビットを反転させた「111 101 101」となる。
デフォルトパーミッションは777(111 111 111)なので、最終的なパーミッションは
「111 111 111」 AND 「111 101 101」 = 111 101 101(755)
となる。
umask [オプション] マスク値
オプション | 概要 |
---|---|
-p | 現在設定されているマスク設定を8進数形式で表示 |
-S | 現在設定されているマスク設定を記号(例:u=rwx,g=rwx,o=rwx)で表示 |
umaskコマンドにオプションを付けないで実行すると、現在設定されているumask値が表示されます。
$ umask 0022
デフォルト以外のumask値の変更はログイン中のみ有効となり、ログアウトするとumask値は元に戻ります。
【計算例】新規作成ファイルのパーミッションを変更するumask値
新規作成したファイルのパーミッションを以下のような設定するumask値を求める。
所有者 → 読み取り権限と書き込み権限がある
所有グループ及びその他のユーザ → 読み取り権限のみある
新規作成したファイルのデフォルトパーミッションは666(rw-rw-rw-)です。
以下のとおり、上記のパーミッション設定を行うumask値は「022」となる。
所有ユーザ → デフォルトのままなので0
所有グループ → デフォルトから書き込み権限(2)が削除されるので、2
その他のユーザ → デフォルトから書き込み権限(2)が削除されるので、2
【計算例】新規作成ディレクトリのパーミッションを変更するumask値
新規作成したディレクトリのパーミッションを以下のような設定するumask値を求める。
所有者 → 読み取り権限、書き込み権限、実行権限がある
所有グループ及 → 読み取り権限、実行権限がある
その他のユーザ → アクセス禁止(すべての権限がない)
新規作成したディレクトリのデフォルトパーミッションは777(rwxrwxrwx)です。
以下のとおり、上記のパーミッション設定を行うumask値は「027」となる。
所有ユーザ → デフォルトのままなので0
所有グループ → デフォルトから書き込み権限(2)が削除されるので、2
その他のユーザ → デフォルトから全ての権限が削除されるので、7
【使用例】新規作成したファイルのデフォルトのパーミッションを「666」から「600」にしたい場合
ファイルを新規作成した際のデフォルトのパーミッションを「666」から「600」にしたい場合、以下のコマンドを実行します。
$ umask 066
umask値の算出過程は以下のとおり。
所有ユーザの権限 6 (rw-) と 調整後6 (rw-) の差はないため 0(1でも可)
所有グループの権限 6 (rw-) と 調整後0 (—) の差は rw のため 6(7でも可)
その他のユーザの権限6 (rw-) と 調整後0 (—) の差は rw のため 6(7でも可)
【使用例】新規作成したディレクトリのデフォルトのパーミッションを「777」から「700」にしたい場合
ディレクトリを新規作成した際のデフォルトのパーミッションを「777」から「700」にしたい場合、以下のコマンドを実行します。
$ umask 066
umask値の算出過程は以下のとおり。
所有ユーザの権限 7 (rwx) と 調整後7 (rwx) の差はないため 0
所有グループの権限 7 (rwx) と 調整後0 (—) の差は rwx のため 7
その他のユーザの権限 7 (rwx) と 調整後0 (—) の差は rwx のため 7
コメント