このsetUIDの例がうまくいかないのはなぜですか? [コピー]

このsetUIDの例がうまくいかないのはなぜですか? [コピー]

私は、スクリプトを実行しているユーザーがスクリプトを実行するときに所有者の権限を継承するsetuidとsetgidについて学んでいます。これをテストするために、権限4755を持つユーザーFiverrで/home/Fiverr/test.shにbashを作成しました。

rwsr-xr-x 1 fiverr fiverr 39 Dec  6 13:47 /home/fiverr/test.sh

これには次の内容が含まれています。

#!/bin/bash
touch /home/fiverr/raza.txt

私(raza)でログインして実行しようとしましたが、権限が拒否されました。どうですか?

touch: cannot touch ‘/home/fiverr/raza.txt’: Permission denied

ベストアンサー1

セキュリティ対策のため、bashスクリプトのuid設定は機能しません。過去には、setuid / setgid機能が特権の昇格に乱用されているため、bashバイナリと拡張bashスクリプトがsetuid / setgid特権を継承/放棄することはできず、ルートのみの最新からsetuidファイルを生成できるという制限があります。 Linuxディストリビューション。

これを実行するには、Cでコンパイルされたバイナリラッパーを使用するか、バイナリで完全に実行する前にsetuidを取得する必要があります。

Debianを使用している場合は、/bin/dashのコピーを設定し、そこから必要なものを呼び出すことができます。

おすすめ記事