setuidがどのように機能するかを理解しようとしています。これまで私が理解しているように、setuidが適用されたファイルを実行するプロセスは、実際に誰が実行したかに関係なく、ファイル所有者がそのファイルを実行したかのように実行されます。しかし、なぜ誰もが実行権限を設定しないのですか? (結局これが実際に起こっていることだと思います。) おそらくここで明らかなことを逃しているのではないでしょうか?
答え1
はい、あなたは明らかなものを見逃しています。cat
(またはls
、、、、または他の一般的なプログラム)を実行すると、そのsed
プログラムが直接実行さawk
れるvi
ため、プログラム/プロセスにはユーザー権限が適用されます。たとえば、setuidプログラムを実行すると、プロセスを変更できるようにルートのpasswd
UIDとして実行されます/etc/shadow
(自分のUIDとして実行すると、プロセスにアクセスできず、読み取ることもできません)。