デフォルトのパーミッションの変更について
ファイルやディレクトリを作成した際のデフォルトのパーミッション変更をしたい場合は、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