質問: linux mintではなくxubuntuでsudoプロセスを強制終了できるのはなぜですか? (通常のユーザーとして) 2台のコンピューターがあります。1台はxubuntu12.04を実行し、もう1台はlinux mint14を実行しています。xubuntuについて:$ sudo gedit 別のターミナルで:$ kill [pid of the gedit process] bash: kill: ([pid]) - operation not permitted $ kill [pid of the sudo process] sudoがroot(setuid)として実行され、通常のユーザーがrootのプロセスを強制終了できない場合でも、この最後の1つは実際にsudoを正常に強制終了します(そしてそれを使用してgeditします)。しかし、私たちが自分で始めたので、どういうわけか私たちはそれに対して特別な権利を持っていると思います。ミントについて:$ sudo gedit 別のターミナルで:$ kill [pid of the gedit process] bash: kill: ([pid]) - operation not permitted $ kill [pid of the sudo process] bash: kill: ([pid]) - operation not permitted では、なぜxubuntuではsudo 通常のユーザーとしてを殺すことができますが、mintでは殺せないのですか?これは何が原因ですか?この動作を変更するにはどうすればよいですか?私はnotプロセスを強制終了する方法を探しています、明らかにsudo killはうまくいくでしょう。
回答: これは、特定のプロセスのrealユーザーidとeffectiveユーザーidの違いであり、sudoが2台のマシンのそれぞれでどのように正確に動作するかを示しています。mintは、プロセスをsudoすると、実効ユーザーid(root)と実際のユーザーid(プロセスを呼び出したユーザー)の両方をrootに変更するように見えます。したがって、元のユーザーはsudoプロセスまたはsudoedプロセス(gedit)を強制終了できません。 xubuntu(そして私の場合はfedora)はこれを行いません。実際のユーザーidは引き続き元のユーザーです。psコマンドを使用して、ユーザーが所有するプロセス(実際または有効)を確認します。 sudogeditコマンドを実行しました。 ps uaxfこのツリーを作成しました:myuserid 22868 0.0 0.0 163400 4872 pts/2 ss 13:19 0:00 | \_ -zsh root 30392 0.0 0.0 205044 3736 pts/2 s+ 13:45 0:00 | | \_ sudo gedit root 30417 0.0 0.1 699788 23692 pts/2 sl+ 13:45 0:00 | | \_ gedit 明らかに、sudoとgeditの両方の有効なユーザーidはrootであり、私自身ではありません。次に、psを--userオプション(--user userlist実際のユーザーid(ruid)または名前で選択)とともに使用して、プロセスの実際のユーザーidが誰であるかを確認しました。ps --user "myuserid" これにより多くの出力が生成されましたが、目立った行が1つありました。30392 pts/2 00:00:00 sudo しかし、プロセス30417は著しく欠落していました...それから私は走った:ps --user "root" これも多くの出力を生成しましたが、この行は際立っていました:30417 pts/2 00:00:00 gedit しかし、プロセス30392はありませんでした。したがって、sudoプロセス(30392)にはrootの有効な所有者がいますが、本当の所有者は私であり、私はそれを殺すことができます。一方、geditプロセスは、ルートによる効果的かつ実際の所有権を持ち、私が(直接)殺すことはできません。 lintでは、両方のプロセスが効果的かつ実際にrootによって所有されていると思います。これは/ etc/sudoersのstay_setuidオプションの影響を受ける可能性があると思いましたが、その説明では実際にはそうは思われません。mintとxubuntuの/ etc/sudoersファイルに違いはありますか?