デフォルトのパーミッションの変更について
ファイルやディレクトリを作成した際のデフォルトのパーミッション変更をしたい場合は、umaskの値を変更する必要があります。
現在設定されているumaskの値は確認したい時には、umaskコマンド
で確認する事が出来ます。
コマンドを実行すると、0002が現在のumaskの値である事が分かりました。(-Sオプションを使用する事で、属性をシンボルで確認出来ます。)
[test_01@localhost ~]$ umask
0002
[test_01@localhost ~]$ umask -S
u=rwx,g=rwx,o=rx
ディレクトリの基本パーミッションは777(rwxrwxrwx)
で、ファイルは666(rw-rw-rw-)
となっております。
上記基本パーミッションからumaskの値を引いた値が、デフォルトのパーミッションになります。
現在の設定では、ディレクトリは777-002=775
となります。ファイルは666-002=664
となります。
実際にファイル/ディレクトリを作成して、想定通りのパーミッションである事を確認しました。
[test_01@localhost ~]$ touch test
[test_01@localhost ~]$ mkdir test_dir
[test_01@localhost ~]$ ll
合計 0
-rw-rw-r-- 1 test_01 test_01 0 3月 6 19:18 test
drwxrwxr-x 2 test_01 test_01 6 3月 6 19:18 test_dir
umaskの値の変更は、umask 変更したい値
とする事で変更出来ます。
変更後に、デフォルトのパーミッションが変更された事を確認してみます。
umask 0000
を実行後にファイル/ディレクトリを作成すると、ファイルは666
でディレクトリが777
のパーミッションとなっている事を確認出来ました。
[test_01@localhost ~]$ umask 0000
[test_01@localhost ~]$ touch test
[test_01@localhost ~]$ mkdir dir
[test_01@localhost ~]$ ll
合計 0
drwxrwxrwx 2 test_01 test_01 6 3月 6 19:29 dir
-rw-rw-rw- 1 test_01 test_01 0 3月 6 19:26 test
ログアウトすると、umaskの値は設定ファイルで指定された値が再度設定されます。
設定ファイルの値を変更する事で、恒久的にumaskの値を変更する事が出来ます。
設定ファイル内でumaskを設定する
/etc/profile
ファイルを編集して、デフォルトのパーミッションを設定する事が出来ます。
ユーザー毎に指定したい場合は、ホームディレクトリ配下の.bash_profile
を編集して下さい。
/etc/profile
ファイル内に、下記のような記載がございます。
$UIDが200以上 AND ユーザー名とグループが同一
の場合は、umask 002が実行されるようです。
それ以外が、022のようです。変更したい値をumaskコマンド
に指定すればよいでしょう。
※/etc/login.defs
ファイルのUID_MIN
の値が200以上の場合に、一般ユーザーを作成している場合はuidが200以上となっているはずです。(当方の環境では、デフォルトで1000が設定されていました。)
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
個別のユーザーだけ対応したいという場合は、.bash_profile
にumask 変更したい値
を記載しましょう。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
umask 0077
export PATH