権限について詳しく知りたいと思います。私が読んでいる内容はユーザー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は許可ビットの可能な組み合わせにすぎません。