2台のコンピューターがあります。1台はXubuntu12.04を実行し、もう1台はLinux Mint14を実行しています。
$ 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ファイルに違いはありますか?
これはおそらくコメントで提供する方が良いでしょうが、私はまだコメントを投稿できません。試してみてください
ps aux | grep Sudo
そのSudoプロセスのユーザー(所有者)を見てください。 Sudoプロセスがrootではなくユーザーとして実行されている可能性があります。
Red Hatシステムを試してみましたが、rootが所有していたため、ローカルの通常ユーザーからSudoプロセスを強制終了できませんでした。
どちらの場合も、rootとしてコマンドを実行すると、プロセスが強制終了されます。 Mintで機能しない理由は、デスクトップ環境に?buntuのような「自動昇格」マネージャーがないためと考えられます。
参照: buntu:自動管理者昇格?
質問は正確には関連していませんが、受け入れられた答えは、知覚された違いの原因に触れています。