このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】パーミッションのマスク値を指定:umaskコマンド

umaskコマンドの概要

 「umask」コマンドは、新しいファイルやディレクトリが作成される際のデフォルトのアクセス権を制御するためのコマンドです。「umask」値を設定することで、初期アクセス権から特定のビットを引いた値がデフォルトのアクセス権として設定されます。

デフォルトのアクセス権

アクセス権の種類デフォルトの値説明
ファイル0666ユーザー、グループ、その他のすべてに読み取り(r)と書き込み(w)の権限が与えられます。
ディレクトリ0777ユーザー、グループ、その他のすべてに読み取り(r)、書き込み(w)、実行(x)の権限が与えられます。
デフォルトのアクセス権

現在設定されているumask値を確認するには

現在の umask値を確認するには、「umask」コマンドをオプションなしで実行します。

 これにより、現在の umask値が表示されます。例えば、「0002」と表示された場合、それが現在のumask値です。

user01@ubuntu-vm:~$ umask
0002

コマンドの使用例と解説

1.umask値を設定する前のファイルとディレクトリのアクセス権の確認

まず、現在の umask値を確認し、ファイルとディレクトリのデフォルトのアクセス権を確認します。

・以下のコマンドを実行します。

user01@ubuntu-vm:~$ umask
0002
user01@ubuntu-vm:~$ touch testfile
user01@ubuntu-vm:~$ mkdir testdir
user01@ubuntu-vm:~$ ls -l
合計 40
(省略)
drwxrwxr-x 2 user01 user01 4096  6月 11 00:59 testdir
-rw-rw-r-- 1 user01 user01    0  6月 11 00:59 testfile
(省略)

 デフォルトの umask値は「0002」です。ファイルのデフォルトのアクセス権は「0664 (rw-rw-r--)」、ディレクトリのデフォルトのアクセス権は「0775」 (rwxrwxr-x)になっています。

2.umask値を設定した後のファイルとディレクトリのアクセス権の確認

次に、umask値を「0027」に設定し、新しいファイルとディレクトリのアクセス権を確認します。

・以下のコマンドを実行します。

user01@ubuntu-vm:~$ umask 0027
user01@ubuntu-vm:~$ touch newfile
user01@ubuntu-vm:~$ mkdir newdir
user01@ubuntu-vm:~$ ls -l
合計 44
drwxr-x--- 2 user01 user01 4096  6月 11 01:16 newdir
-rw-r----- 1 user01 user01    0  6月 11 01:15 newfile
(省略)

 ここでは、umask値を「0027」に設定することで、ファイルのデフォルトのアクセス権が「0640」、ディレクトリのデフォルトのアクセス権が「0750」に変更されています。なお、引き算するとマイナスの値になってしまう場合は0とみなされます。

3.umask値適用前後

 下表は、umask値を設定する前後のファイルとディレクトリのデフォルトのアクセス権の違いを示したものです。

項目ファイルディレクトリ
umask値を設定する前
初期アクセス権0666 (rw-rw-rw-)0777 (rwxrwxrwx)
現在のumask値 (0002)0664 (rw-rw-r--)0775 (rwxrwxr-x)
umask値を設定した後 (0027)
初期アクセス権0666 (rw-rw-rw-)0777 (rwxrwxrwx)
新しいumask値 (0027)0640 (rw-r-----)0750 (rwxr-x---)
umask値適用前後

4.ファイルとディレクトリの削除

この演習で作成したファイルとディレクトリを削除します。

・以下のコマンドを実行します。

user01@ubuntu-vm:~$ rm -r *file *dir
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 このようにして、umaskコマンドを使ってデフォルトのアクセス権を変更し、新しいファイルやディレクトリが作成されたときのアクセス権を制御することができます。umask値の設定は、シェルセッション内でのみ有効です。システム全体に適用するには、シェルの初期化ファイル(例:「~/.bashrc」や「~/.profile」)に追加する必要があります。