umask値の最初の数字は何ですか? [コピー]

umask値の最初の数字は何ですか? [コピー]

私が正しく理解した場合、ファイル権限には読み取り/書き込み/実行権限を指定する3桁の連結番号があります。

umask の値は、デフォルトからデフォルトの「マスク」を引いたものです。では、umask値0022のデフォルト値777は755になりますか?

これは正しいですか?もしそうなら、umask値の最初の0は何ですか?

答え1

あなたの例では、最初の数字0は使用されません。 umask は右から左に読み込まれ、次のゼロは無視されます。ただし、以下のように特殊権限(たとえばsticky bit)を設定するために使用できます。Set GUIDSet UID

0755  —- None of the special bits set
1755  —- Sticky bit set
2755  —- SGID bit set
4755  —- SUID bit set

そうですね。 umask 0022は、新しく作成されたディレクトリのデフォルトの777(ディレクトリ)権限を755にマスクします。

8進番号付けは、最初の3つのグループ(ユーザー、グループ、世界/その他)と同様に機能します。

読み取り/書き込み/実行rwx値は8進形式で表され、その値は合計7つです。

4 - Read 
2 - Write 
1 - Execute

したがって、0755の場合:0は無視されます。 7(4+2+1)は、/ownerの読み取り、書き込み、実行と同じですuser。 5(4+1)はペアの読み取りおよび実行権限と同じで、残りのgroup5(4+1)はother/worldの読み取りおよび実行権限も提供します。

答え2

前の0はC言語(8進構文)から来ており、他の意味はないと言いたいと思います。からman 2 umask、つまり基本Cライブラリを呼び出す:

umask()は、呼び出しプロセスのファイルモード生成マスク(umask)をマスク&0777に設定し(つまり、マスクのファイル許可ビットのみを使用)、マスクの以前の値を返します。


Umaskは単なる減算ではなくビット単位で扱われます。 umask にセットされたビットは結果ファイルモードでクリアされます。

関連情報