プロセスは所有者を持つことができますか?どういう意味ですか?


回答:


18

credentials(7)fork(2)execve(2)を読み取りますforkシステムコールは、プロセスが作成されている方法である(今日、fork多くの場合で実装されたクローン(2)がありますが、実装の詳細としてそれを見ることができます)。execシステムコールは、途中で実行可能なプログラムが開始されています。すべては、いくつかのプロセスからいくつかのシステムコールsyscalls(2)にリストされている)を使用して行われることに注意してください。最初のプロセス(initまたはsystemd)は、ブート時にカーネルによって魔法のように開始されました。他のプロセスはfork(2)によって開始されました。最近のLinuxカーネルは時々 -しかし、めったに-魔法のようにいくつかの特別なプロセス(例えば起動しない/sbin/hotplug(例えば)またはカーネルスレッドをkworkerkswapd...)。

つまり、すべてのプロセス(およびすべてのファイル)には、所有者(技術的にはuid、小さな非負の数)とグループ(gid)があります。0のuidはroot用であり、追加の権限があります。

setuid(およびsetreuid(2) ...)についても読んでください。

他の所有者がそのプロセスを実行できないことを意味しますか?

プロセスはすでに実行されいる(ただし、アイドル状態または待機状態になっている可能性がある)ため、プロセスを再度実行することはできません。プロセス(動的なもの)とその中で実行されているプログラム(実行可能ファイル、多くの場合ELF形式)を混同しないでください。

特定のプログラム(など/bin/bash)は、いくつかのプロセスで実行できます。多くの実行可能ファイルは、(特定の瞬間に)それらを実行しているプロセスがなくても、ディスク上に残ります。

Linuxでは、proc(5)はプロセスの状態についてカーネルに問い合わせるのに非常に役立ちます。例cat /proc/$$/statusとを試してくださいcat /proc/self/mapspgrep(1)ps(1)top(1)も参照してください。

各プロセスには、独自の仮想アドレス空間、独自のファイル記述子テーブル、独自の作業ディレクトリ(および多くの場合、複数のスレッドpthreads(7)を参照)などがあります。

他の所有者がそのプロセスを実行/終了/再開できないことを意味しますか?

プロセスを実行しても意味がありません(すでに実行されています)。ただし、pid 1234のプロセスの実行可能ファイルは/proc/1234/exeシンボリックリンクとして使用可能であり、execve(2)に使用することもできますが、おそらく使用しないでください - の許可ルールがexecve適用されます。

プロセスをkill(2)するには、通常、同じuidが必要です。ただし、ドキュメントには次のように記載されています。

  For a process to have permission to send a signal, it must either be
   privileged (under Linux: have the CAP_KILL capability in the user
   namespace of the target process), or the real or effective user ID of
   the sending process must equal the real or saved set-user-ID of the
   target process.  In the case of SIGCONT, it suffices when the sending
   and receiving processes belong to the same session. 

プロセスを停止するには、kill(2)で使用されるSIGSTOP(またはSIGTSTP)シグナルを使用します。signal(7)を参照してください。

停止したプロセスを再開するには、SIGCONTシグナルを使用します。


4

所有者は通常、そのプロセスを起動したユーザーです。コマンドは他のユーザーが実行できる可能性がありますが、それは別のプロセスになります。

他の所有者がそのプロセスを実行できないことを意味しますか?

他の所有者はいません。プログラム(実行可能ファイル)とプロセス(実行中のプログラム)を混同しないでください。

他の所有者がそのプロセスを実行/強制終了/再開できないことを意味しますか?

単一の所有者はすでにプロセスを開始しました。所有ではなく他のユーザーを意味する場合は、状況によって異なります。

ルート、つまりuid0に等しいユーザーは、全力を持っています。同じことを共有している他のユーザーuidは、OSの観点からは同じユーザーなので、プロセスにも全力を尽くします。

別のuidを持つユーザーは、sudo同様のコマンドを使用して所有者またはroot特権に切り替えることが許可されていない限り、またはプロセスに関連している場合は、より少ない程度で、プロセスを強制終了/停止/再開できません。彼らの階層から。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.