私のコマンドに問題がありますchmod
。 sgid、suid、およびスティッキービットを含むディレクトリがあります。次に実行すると、sgidchmod u=rwx {dirname}
とchmod g=rwx {dirname}
suidはまだ開いています。しかし、chmod o=rwx
スティッキービット除去を実行すると。なぜこれが起こるのかを説明できる人はいますか?
答え1
man chmod
Debian 10 から:
ディレクトリの場合、chmod は明示的に別のビットを指定しない限り、set-user-ID および set-group-ID ビットを保持します。
u+s
アンパサンドやその他の符号モードを使用して、これらのビットを設定または消去できますg-s
。数値モードを持つディレクトリに対してこれらのビットをクリアするには、追加の先行ゼロが必要です00755
。=755
粘着性のあるビットについては、そのような明示的な保証は行われません。したがって、動作は文書と一致します。
なぜchmod
このように設計されたのかは、より難しい質問です。
これは、ユーザーID設定またはグループIDビット設定追加の許可そしてディレクトリの固定ビットのため追加の制限:suid / sgidビットがディレクトリから誤って削除された場合、ユーザーはそのビットを再配置できず(たとえば、ユーザーが所有するディレクトリとユーザーがメンバーではないグループ)、要求する必要があります。システム管理者の助けを借りても、粘着性がある場合、ユーザーは必要に応じて簡単にオンにすることができます。