suidスクリプトが機能しません。

suidスクリプトが機能しません。

私のOSはFedora 24で、suidビット機能をテストしようとしています。

私はSetuid.bashで以下のbashを書きました。

#!/bin/bash
if [ $USER = 'root' ]
then
    echo "Like Root Run"
    echo "Root User Add in " $(date) >> /etc/SetUid
else
    echo "Other User Run"
    echo $USER "User Add in " $(date) >> /etc/SetUid
fi

-rwsrw-r-x. 1 root root 249 May 21 14:45 /bin/Setuid.bash許可を得て-rwx------. 1 root root 432 May 21 14:45 /etc/SetUid

今rootで試してみると、/bin/Setuid.bash次のようになります。

ルート実行と同様に

しかし、実行するときテスト私が出会ったユーザー:

他のユーザーが実行

bin/Setuid.bash: 行 8: /etc/SetUid: 権限が拒否されました。

誰かが私のアプローチがどこで間違っているのか教えてくれてありがとう。

ベストアンサー1

ずっと前にbashsuid(および他のシェルソルバー)のデフォルトのセキュリティ対策が危険だったために追加されました。SUIDシェルスクリプトの危険性

~からBashはなぜこんな感じですか: suid

Bash スクリプトは suid ビットがセットされた状態で実行できません。まず、Linuxではuidを設定するスクリプトを許可しませんが、他のオペレーティングシステムではこれを許可します。第二に、bashはsetuidで実行されていることを検出し、すぐに権限を削除します。

これは、シェルスクリプトのセキュリティが通常のCアプリケーションよりも環境に大きく依存するためです。

最終的にsuidビットは実行可能なバイナリに最も便利です。これらのスクリプト/bashを実行する1つの方法は、suidコンパイルされたバイナリから呼び出すことです。

おすすめ記事