umask--ファイルのデフォルト権限


システム上でデフォルトでファイルまたはディレクトリを作成すると、彼の権限はいくらですか?rootと一般ユーザーを使用して、ファイルとディレクトリを作成して見ることができます.
[root@HZ-CDN-1 test]# mkdir test
[root@HZ-CDN-1 test]# touch a.txt
[root@HZ-CDN-1 test]# ll
total 4
-rw-r--r-- 1 root root    0 Aug 29 10:05 a.txt
drwxr-xr-x 2 root root 4096 Aug 29 10:05 test

上記の実行結果から、rootユーザーが一般的なファイルを作成する権限は、所有者がrw所属グループであるr他の人がrであり、ディレクトリの権限は所有者がrwx所属グループであるrx他の人がrxであるrootユーザーであることがわかります.では、一般ユーザーを見てみましょう.su-oralceというユーザーを見てみましょう.
[oracle@HZ-CDN-1 ~]$ mkdir test
[oracle@HZ-CDN-1 ~]$ touch test.txt
[oracle@HZ-CDN-1 ~]$ ll
total 4
drwxrwxr-x 2 oracle oracle 4096 Aug 29 10:13 test
-rw-rw-r-- 1 oracle oracle    0 Aug 29 10:13 test.txt

一般ユーザーがディレクトリを作成する権限は、所有者rwx、所属グループrwx、他の人rx、ファイルを作成する権限は所有者rw、所属グループrw他の人rであることがわかります.
では、このデフォルトの権限はどのように設定されていますか?ここではlinuxのファイル権限のマスクコードの概念について説明します.マスクコード、umaskとも呼ばれます.彼は新しいファイルとディレクトリの権限のデフォルト値を設定するために使用されます.umaskまたはumask-Sでデフォルトの権限を表示できます.
[oracle@HZ-CDN-1 ~]$ umask 
0002
[oracle@HZ-CDN-1 ~]$ umask  -S
u=rwx,g=rwx,o=rx

上記の実行結果では、一般ユーザーoracleのumaskコードが0002であることがわかりますが、ファイルの権限は8ビットのバイナリ数で表される3ビットではありませんか?r=4 w=2 x=1ですが、なぜ前に0が多くなったのか、この4位は、私たちはしばらく気にしません.それは特殊な権限位です.私たちは後ろの3位を重点的に見ています.ここでは、私たちが所属するグループの書き込み権限を取得したい場合、他の人の書き込み権限を取得したい場合、umaskコードを022に設定します.ファイルのデフォルトは実行権限がないため、したがって、ファイルを作成する権限は-rw-rw-rw-であり、所属するグループの読み取り権限と他の人の読み取り権限を減らすと、彼の最終的な権限は-rw-r--r--です.
システムのデフォルトumaskは/etc/profileに書かれています.cat/etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

システムのumaskを変更する必要がある場合は、実際には簡単なumask 022で現在のシステムのumaskを設定することができます.
[root@HZ-CDN-1 ~]# umask 022