値0666を適用すると、Umaskがファイルに奇妙な結果を設定する

値0666を適用すると、Umaskがファイルに奇妙な結果を設定する

umaskは値を適用したときに奇妙な結果を表示します:0666

umask値を1つでも適用すると期待どおりに機能しますが、0666を適用するとディレクトリは正しい権限値を取得しますが、ファイルは奇妙な値を取得します。

$ mkdir demo
$ cd demo
$ umask 0666 ../demo
$ mkdir d1 && touch f1
$ umask 0333 ../demo
$ mkdir d2 && touch f2
$ ls -l

drwxrwxr-x 4 riajul riajul 4096 Mar 27 17:33 ./
drwxr-xr-x 4 riajul riajul 4096 Mar 27 17:30 ../
d--x--x--x 2 riajul riajul 4096 Mar 27 17:32 d1/
dr--r--r-- 2 riajul riajul 4096 Mar 27 17:33 d2/
---------- 1 riajul riajul    0 Mar 27 17:32 f1
-r--r--r-- 1 riajul riajul    0 Mar 27 17:33 f2

f1がd1とは異なる権限を持っているのはなぜですか?

例: イメージ

ここに画像の説明を入力してください。

ベストアンサー1

umaskはマスクです、ファイル権限に適用されます。touchデフォルトでは、権限が666のファイルが作成されます。;マスク0666を使用すると、これらすべての権限ビットがマスクされ、権限ビットが設定されていないファイルになります。

umask は特定のディレクトリに設定されず、プロセスごとに管理され、プロセスの開始時に親プロセスから継承されます。umask 0666またはを実行すると、umask 0333現在のシェルのumaskが指定された値に設定され、追加の引数は無視されます。

おすすめ記事