【Linux】umaskコマンドの使い方。デフォルトのアクセス権を変更する方法

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

関連ページ

LinuCの試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
404 NOT FOUND | Linux超入門
【Linuxコマンド入門】主なコマンドとサンプル集
Linuxコマンドの主な使い方とサンプル集について入門者向けにまとめました。

コメント