リンク、bash スクリプト、SUID を使用して特定の機能への限定的なアクセスを提供しようとしています。SUID スクリプトはルート アクセスでは実行されません。

リンク、bash スクリプト、SUID を使用して特定の機能への限定的なアクセスを提供しようとしています。SUID スクリプトはルート アクセスでは実行されません。

編集: これスティッキービットが有効 スクリプトはルートファイルに書き込めません同様の問題があるようだ

編集:シェル スクリプトで SetUID を使用して非 root ユーザーとして実行するにはどうすればよいですか?非常によく似ています。

スクリプトがあります。これを read.sh と呼びます。ファイルがあります。これを secret と呼びます。

# cd /home/normie
# echo "some stuff" > secret
# echo "#!/bin/bash" > read.sh
# echo "cat secret" >> read.sh
# chmod 600 secret
# chmod 4755 read.sh
# su normie
$ ./read.sh
<<Error about not having access to secret>>

何か見逃したのでしょうか?SUIDビットによってスクリプトが所有者として実行されると思いましたが、次のコードを実行すると

# echo "touch newfile" > sumfile.sh
# chmod 4755 sumfile.sh
# su normie
$ ./sumfile.sh
$ ls -alh
<<newfile shows as owned by root>>

ここで何が起こっているのでしょうか。また、どうすれば希望どおりに動作させることができるのでしょうか。希望どおりに動作させるには、一般ユーザーが完全なルート アクセスで特定のスクリプトを実行できるようにする必要があります。(suid ビットがそれを行うと考えていました)

答え1

sudoをインストールするapt install sudo

関連するユーザーを何らかのグループに所属させるgroupadd group && usermod -g group user

/etc/sudoersに以下を追加します%group (ALL)=(root:root) NOPASSWD:/path/to/script.sh

.bashrcにエイリアスを追加するalias ALIAS='sudo /path/to/script.sh'" >> ~user/.bashrc

グループのすべてのメンバーが、問題のスクリプトを root として実行できるようになりました。

答えは恥ずかしげもなく盗用されたシェル スクリプトで SetUID を使用して非 root ユーザーとして実行するにはどうすればよいですか?(ユーザー9517)

関連情報