このセクションによるとプロセスの役割glibc マニュアル:
A process also has a real user ID which identifies the user who created the process ...
これを確認するために、次のコマンドを実行しました。
ps -eo cmd,ruid,euid | grep 'bash\|login'
これにより、次のように表示されます(lgdアカウントのuidは1000です)。
login --lgd 0 0
-bash 1000 1000
bash
login
作成者がrootユーザーに属しているので、値が0のruidが0ではないのはなぜですか?私が間違って理解したのか、それともlogin
bashのruidを変更するのと同じ関数を呼び出すのですか?setuid()
答え1
login
実行する前にユーザーIDを変更しましたbash
。シャドウの実装では、次のことがわかります。ここ、その前にはより多くの設定がありますシェルが起動しました。
引用したリンクに記載されている役割の違いは、実際にはsetuidプログラムに関連しています。コピーを作成しid
てsetuidに設定すると、他の値id -u
がid -ru
表示されます。後者がプロセスを開始したユーザー ID。