chgrpが「setuidビット」をクリアするのを防ぐ方法は?

chgrpが「setuidビット」をクリアするのを防ぐ方法は?

私たちは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 /whateversetuidビットを維持しながらこれを達成するには、次の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を適用し、次にchgrpaを適用してchmodキャンセルされたsetuidビットを復元します。 2番目はchgrpsetuidビットを持たないすべてのファイルに適用されます。

chgrpどんな状況でも呼び出すか、シンボリックリンクを使用したくありません。chmodこれはターゲットに影響を与えるので! -type l

おすすめ記事