デフォルトパーミッションとumask
本記事の対象者
LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。
今回の内容
今回は、デフォルトパーミッションとumaskについて解説します。
ファイルやディレクトリ作成時のパーミッションが決定する仕組みとその変更方法になります。
デフォルトパーミッション
ファイルやディレクトリ作成時のパーミッションのことを、デフォルトパーミッションと言います。
これはどのように決定しているのでしょうか。
まず以下の例を見てください。
[root@localhost umask_sample]# ll 合計 0 [root@localhost umask_sample]# mkdir sample [root@localhost umask_sample]# touch sample.txt [root@localhost umask_sample]# ll 合計 0 drwxr-xr-x. 2 root root 6 7月 6 11:05 sample -rw-r--r--. 1 root root 0 7月 6 11:05 sample.txt
ディレクトリとファイルを作成した際に、それぞれパーミッションが設定されていますが、両者で少し異なるのが分かります。
これは以下のように決定してます。
- sampleディレクトリ
777 – 022 = 755
755 → rwxr-xr-x
- sample.txtファイル
666 – 022 = 644
644 → rw-r–r–
何か計算をしていますが、この中で赤字になっているものはディレクトリやファイルにあらかじめ決められた固定値です。
この固定値は、ディレクトリは「777」でファイルは「666」と定められています。
そして青字になっている部分は「umask」といいます。
デフォルトパーミッションは以下の計算法則で決定しています。
ディレクトリ
ファイル
ディレクトリやファイルの固定値は暗記しましょう。
umask
umaskは、デフォルトパーミッションの決定に用いられる値です。
設定は「/etc/bashrc」に記載されています。
初期状態では、rootユーザのumaskは「022」、一般ユーザのumaskは「002」に設定されています。
[root@localhost ~]# cat /etc/bashrc ~~省略~~ if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi ~~省略~~
このumaskの値を変更するには、umaskコマンドを使用します。
umask | |
---|---|
意味 | umaskを設定する。 |
書式 | umask [マスク値] |
引数なしで使用すると、現在のumask値を表示します。
[root@localhost ~]# who am i root pts/1 2022-07-06 11:03 (192.168.56.1) [root@localhost ~]# umask 0022
[sak@localhost ~]$ who am i sak pts/2 2022-07-06 14:06 (192.168.56.1) [sak@localhost ~]$ umask 0002
rootユーザでは「022」、一般ユーザでは「002」に設定されていることが分かります。
[sak@localhost umask_sample]$ umask 0002 [sak@localhost umask_sample]$ mkdir sample [sak@localhost umask_sample]$ ll drwxrwxr-x. 2 sak sak 6 7月 6 14:12 sample [sak@localhost umask_sample]$ umask 027 [sak@localhost umask_sample]$ mkdir sample2 [sak@localhost umask_sample]$ ll drwxrwxr-x. 2 sak sak 6 7月 6 14:12 sample drwxr-x---. 2 sak sak 6 7月 6 14:14 sample2
初期状態ではumaskは「002」です。
この状態で「sample」ディレクトリを作成するとそのパーミッションは「775(rwxrwxr-x)」になっています。
これは「777 – 002」の結果です。
次にumaskコマンドを使用してumaskを「027」に変更しています。
そして「sample2」ディレクトリを作成すると、今度はパーミッションが「750(rwxr-x—)」になっています。
「777 – 027 = 750」だからです。
このように、umaskを変更することでデフォルトパーミッションを変更することができます。
ただし、umaskコマンドによる設定は一時的なものです。
再起動により失われます。
永続的にumaskを変更したい場合は、「/etc/bashrc」ファイルの値を書き換える必要があります。
また、ユーザ個別に設定したい場合は、「~/.bashrc」などに設定を書きこむことで可能です。
既にumaskの設定行が存在する場合はそこの値を変更、存在しない場合は「umask 022」などのように末尾に追記すればよいです。
まとめ
今回は、デフォルトパーミッションとumaskについて解説しました。
chmodコマンドを使用すればファイルやディレクトリのパーミッションの変更は可能です。
しかし、作成時点で設定したい特定のパーミッションが決まっている場合は、umaskを設定する方がよいでしょう。
LPIC-1ではumaskに関する問題がいくつか出題されますので、計算方法はしっかり身に着けておいてください。
最後に確認問題で今回の記事の知識を是非復習しましょう。
確認問題
新規作成したファイルのデフォルトパーミッションが「rw-r—–」である場合、設定されているumaskは次のうちどれか。
A) 117
B) 640
C) 030
D) 227
E) 027