「chmod 1777」と「chmod 3777」の両方が固定ビットを設定するのはなぜですか?

「chmod 1777」と「chmod 3777」の両方が固定ビットを設定するのはなぜですか?

ディレクトリに固定ビットを設定するには、両方のコマンドがchmod 1777機能するのはなぜですかchmod 3777

答え1

     1            1             1         1   1   1      1   1   1      1   1   1
___________   __________   __________    ___ ___ ___    ___ ___ ___    ___ ___ ___ 
setUID bit    setGID bit   sticky bit     user           group          others  

このグループの各数字(8進数であるため、8進数とも呼ばれます)は3ビットを表します。バイナリで作るとはるかに簡単です。

1 = 0 0 1
3 = 0 1 1
5 = 1 0 1
7 = 1 1 1

したがって、1777、3777、5777、または7777を使用すると、3番目の列が1になり、固定ビットを設定します。ただし、3777、5777、7777では、追加ビット(最初の列のSUID、2番目の列のSGID)を設定する必要があります。

逆に、その位置の他の数(最大7)は、最後の列が1または「on」ではないため、固定ビットを設定しません。

2 = 0 1 0
4 = 1 0 0
6 = 1 1 0

答え2

chmodに引数として渡される権限は、次のように指定されます。8進数値。値の各数字は3桁を表します。 3つの数字が与えられたら、ファイル所有者、グループ、および他のすべての人の読み取り、書き込み、および実行ビットを設定します。 4つの数字が指定されている場合、左端の数字はsetuid、setgid、および固定ビットを設定します。 8進数1は固定ビットを設定します。 8進数2はsetgidビットを設定します。 Octal2+Octal1 は Octal3 で、setgid ビットと固定ビットを設定します。

関連情報