私たちはRHベースのLinuxイメージを持っています。これを当社の製品の最新の開発バージョンにアップグレードするには、一部の「特殊アーカイブ」を「適用」する必要があります。
アーカイブを作成した人は、基本イメージの一部の権限が間違っていると考えて実行するように指示されました。
sudo chgrp -R nobody /whatever
後でアプリケーションを実行すると、いくつかの理解できない問題が発生しました。
後で知った:電話chgrp〜する明らか/whateverのバイナリファイルのSetuidビット情報。
実際の問題は次のとおりです。いくつかのバイナリ〜しなければならない正しい動作のために setuid ビットをセットしてください。
簡単に言うと、「chgrp」コマンドを実行する方法はありますか?いいえ私のsetuidビットを殺してみましょうか?
私はローカルUbuntuで次のコマンドを実行して同じ結果を得ました。
mkdir sticky
cd sticky/
touch blub
chmod 4755 blub
ls -al blub
-->赤い背景を持つファイル名を表示 - >はい、setuidです。
chgrp -R myuser .
ls -al blub
-->赤い背景なしでファイル名を表示する --> setuidが消える
ベストアンサー1
chgrp -R nobody /whatever
setuidビットを維持しながらこれを達成するには、次の2つのfind
コマンドを使用できます。
find /whatever ! -type l -perm -04000 -exec chgrp nobody {} + \
-exec chmod u+s {} +
find /whatever ! -type l ! -perm -04000 -exec chgrp nobody {} +
このfind ... -perm 04000
オプションは setuid ビットがセットされたファイルを選択します。次に、最初のコマンドはaを適用し、次にchgrp
aを適用してchmod
キャンセルされたsetuidビットを復元します。 2番目はchgrp
setuidビットを持たないすべてのファイルに適用されます。
chgrp
どんな状況でも呼び出すか、シンボリックリンクを使用したくありません。chmod
これはターゲットに影響を与えるので! -type l
。