回答:
を変更してumask
(ほとんどの実装で)より多くの読み取り/書き込み特権を許可することができますが、一般的に要求された許可はであるため、実行できません0666
。
あなたの場合umask
で022
、あなたはわかりますtouch
作る0644
ファイルを。
興味深いことに、POSIXは次の点でこの動作を説明していますcreat
。
ファイルが存在しない場合:
レコード生成()関数は、次の引数で呼び出されます。
fileオペランドは、パス引数として使用されます。
ビット単位込みの値ORの
S_IRUSR
、S_IWUSR
、S_IRGRP
、S_IWGRP
、S_IROTH
、およびS_IWOTH
mode引数として使用されています。
そしてそれは、にリンクをたどり、にリンクしcreat
、open
に言及し、umask
にバックトラックしてopen
(そしてcreat
)umask
影響することを確認するだけですtouch
。
以下のためにumask
のみ影響するようにtouch
コマンドを、サブシェルを使用します。
(umask 066; touch private-file)
(umask 0; touch world-writable-file)
touch file-as-per-current-umask
(いずれにせよ、ファイルが事前に存在していた場合、touch
アクセス許可は変更されず、タイムスタンプが更新されるだけです)。