一部のumask値が適用されないのはなぜですか?

一部のumask値が適用されないのはなぜですか?

権限をよりよく理解しようとしているので、いくつかの「練習」をしています。以下は、私が使用した一連のコマンドとその出力です。

$ umask
0022
$ touch file1
$ ls -l file1
-rw-r--r-- 1 user group 0 Mar 16 12:55 file1
$ mkdir dir1
$ ls -ld dir1
drwxr-xr-x 2 user group 4096 Mar 16 12:55 dir1

これは、デフォルトのファイル権限が666rw-rw-rw-)であり、ディレクトリのデフォルト権限が777rwxrwxrwx)であることがわかっているため意味があります。これらのデフォルト権限からumask値を減算すると、があるため、 666-022=644前のrw-r--r--出力file1とも 777-022=755一致しrwx-r-x-r-xますdir1

しかし、umaskをからに変更すると、もはやそうでは022あり021ません。

以下はファイルの例です。

$ umask 0021
$ touch file2
$ ls -l file2
-rw-r--rw- user group 0 Mar 16 13:33 file2

-rw-r--rw-はい646、しかしそうです666-021=645。したがって、以前の計算どおりに動作しません。

以下はディレクトリの例です。

$ touch dir2
$ ls -ld dir2
drwxr-xrw- 2 user group 4096 Mar 16 13:35 dir2

drwxr-xrw-はい756777-021=756。したがって、この場合、結果は前の計算と一致します。

私はこの人の記事を読みましたが、この行動について何も見つかりませんでした。

誰かが理由を説明できますか?

説明する

答えで指摘したように、umaskの価値は次のとおりです。数学的減算デフォルトのディレクトリとファイルの権限。

関連する有効な演算は、AND(&) および NOT(!) ブール演算子の組み合わせです。一方:

=生成された権限
D=基本権限
ゆう=現在のumask

R = D&!U

たとえば、

第666話! 0053=110110110
            ! 000101011
             110110110 &  
             111010100
           = 110010100 = 624 = 読み書き - 読み書き -
 
777&!0022=111111111&
            !000 010 010
             111111111&  
             111101101
           = 111101101 = 755 = rwxr--xr-x

ヒント

結果の権限をすばやく理解する簡単な方法(少なくとも私には役立ちます)は、小数点以下の3桁の値しか使用できないと考えることです。

r = 100 = 4 
w = 010 = 2
x = 001 = 1

権限はこの3つの値の組み合わせです。
" "相対権限が付与されていないことを示すために使用されます。

666 = 4+2+" "   4+2+" "   4+2+" "  = rw rw rw  

したがって、現在umaskがある場合は、グループから読み取りおよび実行権限を削除し、他のグループでは書き込みおよび実行権限を削除すること 0053を知っています。(4+1)(2+1)

 4+2     " "+2+" "     4+" "+" "   = 624 = rw--w-r--  

(グループや他のユーザーには実行権限がありません)

ベストアンサー1

umaskマスク、減算された値ではありません。したがって:

  • パターン666、マスク022:結果は666&〜022、つまり666&755は644です。
  • パターン666、マスク021:結果は666&〜021、つまり666&756、つまり646です。

関連部分を考えてみてください。パターンの 6 はビット 1 と 2 がセット、リード、ライトされることを示します。マスク マスクビット 1 の 2 は書き込みビットです。マスクの1は実行ビットであるマスクビット0です。

これを表現する別の方法は、権限をテキスト形式で表示することです。 666666 rw-rw-rw-022はい----w--w-021はい----w---x。マスクはパターンから設定されたビットを削除するので、fromはマスクになり、rw-rw-rw-fromはマスクになります。----w--w-rw-r--r------w---xrw-r--rw-

おすすめ記事