実行可能ビットなしでsetuidを有効にする目的は何ですか?

実行可能ビットなしでsetuidを有効にする目的は何ですか?

権限について詳しく知りたいと思います。私が読んでいる内容はユーザーIDの設定そしてその用途。しかし、この特別なケースは私を混乱させます。

小さなスクリプトを作成し、設定が完了しました。スエイドスクリプトビットは次のようになります。

chmod u+s ramesh

権限が次のように設定されていることを確認しました。

-rwsrw-r--  1 ramesh ramesh   29 Sep 30 10:09 ramesh

これで、setuidを使用しているすべてのユーザーがスクリプトを実行できると思います。これでコマンドを実行しました。

chmod u-x ramesh

許してくれましたが、

-rwSrw-r--  1 ramesh ramesh   29 Sep 30 10:09 ramesh

今は理解S実行可能ビットがない setuid を示します。つまり、誰もこのファイルを実行できません。

だから私の質問は、設定の実際の目的は何ですか?S少しありますか?私は例の観点からこれを設定することを理解しようとしています。

ベストアンサー1

これで、setuidを使用しているすべてのユーザーがスクリプトを実行できると思います。

完全なものではなく。すべてのユーザーがスクリプトを実行できるようにするには、a+rx権限を設定するだけです。

chmod a+rx script

setuid は、スクリプトが常に次から始まることを意味します。所有者の権限つまり、次のバイナリがある場合:

martin@dogmeat ~ % touch dangerous
martin@dogmeat ~ % sudo chown root:root dangerous 
martin@dogmeat ~ % sudo chmod a+rx,u+s dangerous 
martin@dogmeat ~ % ll dangerous 
-rwsrwxr-x 1 root root 0 Sep 30 17:23 dangerous*

このバイナリは、実行しているユーザーに関係なく常に root として実行されます。明らかにこれは危険なので、特にsetuidアプリケーションを書くときにsetuidに非常に注意する必要があります。また、Linuxでは本質的に安全ではないため、スクリプトでsetuidをまったく使用しないでください。

今、Sはsetuidに実行可能なビットがないことを意味することを理解しています。つまり、誰もこのファイルを実行できません。

だから私の質問は、Sビット設定の実際の用途は何ですか?私は例の観点からこれを設定することを理解しようとしています。

実際の目的はありません。 IMOは許可ビットの可能な組み合わせにすぎません。

おすすめ記事