umaskが実行ビットを設定しないのはなぜですか? [コピー]

umaskが実行ビットを設定しないのはなぜですか? [コピー]

私はLinuxに初めて触れました。いくつかの命令を練習してみました。私の質問は、いつ別のumaskを使用して別のファイルを生成するかについてです。たとえば、

umask 222私が理解したところによると、777 - 222 = 555に等しいので、新しいファイル(「新しいファイル」)、その後新しいファイル権限は次のようにする必要がありますr-xr-x-r-x(それとも私が間違っていますか?)。

どの:「新しいファイル」権限を使用して作成されますr--r--r--

私のumask価値/etc/profileは次のとおりです

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

私のuidは1002です。

注:記録のためにすべてのumaskの質問と文書を読みましmanたが、まだ理解できません。

答え1

ほとんどのプログラムは実行ビットセット(0666== -rw-rw-rw-)なしでファイルを生成します。実行ビットは、実行ファイルのインストール中にコンパイラによってのみ設定されるか、ユーザーが手動で設定します。

次に、umaskを適用して実際の権限を確認します。

create    0666 rw-rw-rw-
umask     0222 r-xr-xr-x
effective 0444 r--r--r--

実際には減算ではなく、2の補数のビットANDです。

したがって0777- 0222= が必要で0555

  OCTAL  BINARY       HUMAN-READABLE
  0666   0110110110  -rw-rw-rw-
& 0555   0101101101  -r-xr-xr-x
  0444   0100100100  -r--r--r--

また、見ることができますACLの動作を説明できません。

答え2

Wikiに良い説明があります。マスク。ビット 0 は生成プロセスで指定したすべての操作が進行することを意味し、1 は発生しないことを意味します。

したがって、「222」は、ユーザ、グループ、および他のユーザに対する書き込み権限を無視するが、読み出しおよび実行ビットは維持することを意味する。

あなたの例で生成された新しいファイルには実行ビットが設定されていません(通常、新しいファイルを作成するときに実行ファイルにはなりません)。r--r--r--これがr-xr-xr-x

関連情報