umask値に基づいてファイルとディレクトリの権限を表示する

umask値に基づいてファイルとディレクトリの権限を表示する

デフォルトのファイルとディレクトリのアクセス許可を設定するためにumask値を使用する方法に関するホームページがありますが、次の問題が発生します。

umask = 0541がある場合

  • 0666 - 0541 = 0125、ファイル権限:---x-w-r-x
  • 0777 - 0541 = 0236、ディレクトリ権限:d-w--wxrw-

しかし、Linux端末の実際の結果は次のとおりです。

  • d-w--wxrwディレクトリ用
  • --w--w-rw-ファイルについて説明してください!

答え1

umaskは減算ではなく、umaskに基づく論理AND演算であることに注意してください。

バイナリ権限を検討してください。

したがって、0666のライセンスは次のようになります。

110 110 110

今umask 0541

101 100 001

結果を計算するためにumaskを無効にします。

010 011 110

その後、許可を受けてAND演算を実行します。

だから

110 110 110  AND
010 011 110
=== === ===
010 010 110

これは-w--w-rw-にマップされます。

答え2

こう考えてみてください。デフォルトの権限666がある場合は、r+wユーザー、グループ、および他のユーザーに対する権限のみがあり、umaskを介して541r + x、r、x権限を削除したい場合です。

ユーザーの場合:

By default you can read+write and by umask you want to remove read+executable 
permissions, but it will never happen because initially file has no executable 
permissions. So only read permission will be removed.

グループの場合:

read permission will removed

他の人のために:

There is no executable permission in the file, so there will be no change.

ディレクトリにも同じ概念が適用されます。

関連情報