RHベースのLinuxイメージがあります。私たちの製品の最新の開発バージョンにアップグレードするために、いくつかの「特別なアーカイブ」を「適用」する必要があります。
アーカイブを作成した人は、ベースイメージ内で一部の権限が間違っていることに気付きました。私たちは走るように言われました
sudo chgrp -R nobody /whatever
私たちはそれをしました。その後、アプリケーションの実行中に、あいまいな問題が発生しました。
後で見つけたもの:chgrpを呼び出すと、/ whatever内のバイナリのsetuidビット情報がクリアされます。
そして実際の問題は次のとおりです。一部のバイナリは、正しく機能するためにそのsetuidビットが設定されている必要があります。
短い話:私のsetuidビットを殺さずに "chgrp"コマンドを実行する方法はありますか?
私はローカルUbuntuで以下を実行しました。同じ結果につながる:
mkdir sticky
cd sticky/
touch blub
chmod 4755 blub
ls -al blub
->背景が赤のファイル名が表示されます->そう、そうです、setuid
chgrp -R myuser .
ls -al blub
->赤い背景なしでファイル名を表示します-> setuidがなくなっています
setuid
ビットではなくビットを設定しているsticky
。(2)setuid
行うとき、chgrp
またはchown
セキュリティ上の問題になるときにビットをクリアしない。
4XXX
ビットはスティッキーではなく、setuidビット(s
)と呼ばれます。スティッキーはt
ビットであり、その目的は少し異なります:en.wikipedia.org/wiki/Sticky_bit