回答:
を変更してumask(ほとんどの実装で)より多くの読み取り/書き込み特権を許可することができますが、一般的に要求された許可はであるため、実行できません0666。
あなたの場合umaskで022、あなたはわかりますtouch作る0644ファイルを。
興味深いことに、POSIXは次の点でこの動作を説明していますcreat。
ファイルが存在しない場合:
レコード生成()関数は、次の引数で呼び出されます。
fileオペランドは、パス引数として使用されます。
ビット単位込みの値ORの
S_IRUSR、S_IWUSR、S_IRGRP、S_IWGRP、S_IROTH、およびS_IWOTHmode引数として使用されています。
そしてそれは、にリンクをたどり、にリンクし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アクセス許可は変更されず、タイムスタンプが更新されるだけです)。