web-dev-qa-db-ja.com

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

ディレクトリにスティッキービットを設定するには、なぜコマンドchmod 1777およびchmod 3777両方とも機能しますか?

15
Liao Zhuodi

そのグループ内の各数値(base8であるため、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)。

逆に、最後の列が1または "オン"にならないため、そのスポットの他の数値(最大7つまで)はスティッキービットを設定しません。

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

30
JZeolla

引数としてchmodに渡されるアクセス許可は、 8進数 値として指定されます。値の各数値は3ビットを表します。 3つの数字が指定されている場合は、ファイルの所有者、グループ、およびその他(その他すべて)の読み取り、書き込み、および実行ビットを設定しています。 4つの数字が指定されている場合、左端の数字がsetuid、setgid、stickyビットを設定します。 Octal 1はスティッキービットを設定します。 Octal 2はsetgidビットを設定します。 Octal 2 + octal 1は、setgidビットとstickyビットの両方を設定する8進数3です。

16
Kyle Jones