まくまくLinux/Shellノート
Linux の各種 ID(プロセス ID やユーザ ID など)についてのメモ
2014-01-02

プロセス ID (pid: Process ID)

Unix システム上で動作しているプロセスには、0 ~ 30000 までのユニークな pid(プロセス ID)が割り当てられます。 プロセス ID が 1 のものは、最初に立ち上がる init プロセスです(例外として、終了した親プロセスの pid を子プロセスから参照すると 1 が返されます)。

プロセス・グループ ID (pgid: Process Group ID)

プロセス・グループとは、1 つ以上のプロセスをまとめて扱う仕組みで、個々のプロセスに対してではなく、プロセス・グループに対してシグナルを送ったりすることができます。 プロセス・グループには 1 つのプロセス・グループ・リーダ(プロセス)が存在し、そのプロセス ID (pid) をプロセス・グループ ID (gpid) として使用します(つまり、プロセス・グループ・リーダの pid と gpid は等しくなります)。

プロセス・グループ・リーダではないプロセスをリーダにするには、setpgrp システムコールを使用します。

ターミナル・グループ (tty group)

プロセス・グループ・リーダがあるターミナルと関連を持っている場合、そのプロセス・グループのすべてのプロセスは同じターミナル・グループに属します。 ターミナルとの接続が切れた場合、そのターミナル・グループ内のすべてのプロセスに SIGHUB シグナルが送られます。

リアル・ユーザ ID(実ユーザ ID)(ruid: Real User ID)

ログイン名と1対1で対応付けられるユーザを識別するための ID です。 /etc/passwd を見ると、どのように対応付けられているかが分かります。 子プロセスを生成した場合は、親プロセスの ruid が引き継がれます。

リアル・グループ ID(実グループ ID)(rgid: Real Group ID)

リアル・ユーザ ID のグループ版と考えれば OK です。 /etc/passwd を見ると、ログイン名と rgid の対応付けが分かります。

実効ユーザ ID/実効グループ ID

ファイルにアクセスできるかどうかを決定するためのカギとなる ID です。 子プロセスは親プロセスの実効ユーザ ID、実効グループ ID を引き継ぎます。 実行した実行ファイルに set-user-idset-group-id ビットが設定されている場合は、その実行ファイルの所有者のユーザ ID、グループ ID が実効ユーザ ID、および、実効グループ ID となります。

2014-01-02