Man page - credentials(7)

Packages contains this manual

Available languages:

en fr pl ja de

Manual

CREDENTIALS

名 前
説 明
プ ロ セ ス ID (PID)
親 プ ロ セ ス ID (PPID)
プ ロ セ ス グ ル ー プ ID と セ ッ シ ョ ン ID
ユ ー ザ ー ID と グ ル ー プ ID
Modifying process user and group IDs
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

credentials - 認 証 に 用 い ら れ る プ ロ セ ス の 識 別 子

説 明

プ ロ セ ス ID (PID)

各 プ ロ セ ス は 、 負 で な い 整 数 の 一 意 な 識 別 子 を 持 つ 。 こ の 識 別 子 は fork (2) を 使 っ て プ ロ セ ス が 生 成 さ れ る 際 に 割 り 当 て ら れ る 。 プ ロ セ ス は getpid (2) を 使 っ て 自 分 の PID を 取 得 で き る 。 PID は pid_t 型 で 表 現 さ れ る ( pid_t <sys/types.h> で 定 義 さ れ て い る )。

PID は 各 種 の シ ス テ ム コ ー ル で そ の シ ス テ ム コ ー ル が 作 用 す る プ ロ セ ス を 特 定 す る た め に 使 用 さ れ る 。 以 下 に 例 を 挙 げ る : kill (2), ptrace (2), setpriority (2), setpgid (2), setsid (2), sigqueue (3), waitpid (2).

プ ロ セ ス の PID は execve (2) の 前 後 で 不 変 で あ る 。

親 プ ロ セ ス ID (PPID)

プ ロ セ ス の 親 プ ロ セ ス の ID は 、 fork (2) を 使 っ て そ の プ ロ セ ス を 生 成 し た プ ロ セ ス を 示 す 。 プ ロ セ ス は getppid (2) を 使 っ て 自 分 の PPID を 取 得 で き る 。 PPID は pid_t 型 で 表 現 さ れ る 。

プ ロ セ ス の PPID は execve (2) の 前 後 で 不 変 で あ る 。

プ ロ セ ス グ ル ー プ ID と セ ッ シ ョ ン ID

各 プ ロ セ ス は セ ッ シ ョ ン ID と プ ロ セ ス グ ル ー プ ID を 持 つ 。 こ れ ら の ID は ど ち ら も pid_t 型 で 表 現 さ れ る 。 プ ロ セ ス は 、 そ れ ぞ れ getsid (2), getpgrp (2) を 使 っ て 自 分 の セ ッ シ ョ ン ID、 プ ロ セ ス グ ル ー プ ID を 取 得 で き る 。

fork (2) で 生 成 さ れ た 子 プ ロ セ ス は 親 プ ロ セ ス の セ ッ シ ョ ン ID と プ ロ セ ス グ ル ー プ ID を 継 承 す る 。 プ ロ セ ス の セ ッ シ ョ ン ID と プ ロ セ ス グ ル ー プ ID は execve (2) の 前 後 で 不 変 で あ る 。

セ ッ シ ョ ン と プ ロ セ ス グ ル ー プ の 概 念 は 、 シ ェ ル の ジ ョ ブ 制 御 を 行 う た め に 考 案 さ れ た も の で あ る 。 プ ロ セ ス グ ル ー プ (時 に は 「 ジ ョ ブ 」 と 呼 ば れ る こ と も あ る ) は 、 同 じ プ ロ セ ス グ ル ー プ ID を 共 有 す る プ ロ セ ス の 集 ま り で あ る 。 シ ェ ル は 、 一 つ の コ マ ン ド も し く は パ イ プ ラ イ ン の 実 行 に 使 わ れ る プ ロ セ ス 群 に 対 し て 一 つ の プ ロ セ ス グ ル ー プ を 生 成 す る (例 え ば 、 コ マ ン ド "ls | wc" を 実 行 す る た め に 生 成 さ れ る 二 つ の プ ロ セ ス は 同 じ プ ロ セ ス グ ル ー プ に 置 か れ る )。 所 属 す る プ ロ セ ス グ ル ー プ は setpgid (2) を 使 っ て 設 定 で き る 。 自 身 の プ ロ セ ス ID が プ ロ セ ス グ ル ー プ ID と 同 じ プ ロ セ ス は 、 そ の グ ル ー プ の 「 プ ロ セ ス グ ル ー プ リ ー ダ ー 」 で あ る 。

セ ッ シ ョ ン は 、 同 じ セ ッ シ ョ ン ID を 共 有 す る プ ロ セ ス の 集 ま り で あ る 。 あ る 一 つ の プ ロ セ ス グ ル ー プ の 全 メ ン バ ー は 同 じ セ ッ シ ョ ン ID を 持 つ (つ ま り 、 一 つ の プ ロ セ ス グ ル ー プ の メ ン バ ー は 全 て 同 じ セ ッ シ ョ ン に 所 属 し 、 こ れ に よ り 、 セ ッ シ ョ ン と プ ロ セ ス グ ル ー プ で 二 階 層 の プ ロ セ ス 階 層 が 形 成 で き る )。 新 た な セ ッ シ ョ ン の 生 成 は プ ロ セ ス が setsid (2) を 呼 び 出 す こ と で 行 う 。 setsid (2) は 、 setsid (2) を 呼 び 出 し た プ ロ セ ス の PID と 同 じ 値 の セ ッ シ ョ ン ID を 持 つ 新 た な セ ッ シ ョ ン を 生 成 す る 。 セ ッ シ ョ ン の 生 成 者 は 「 セ ッ シ ョ ン リ ー ダ ー 」 と 呼 ば れ る 。

あ る セ ッ シ ョ ン の 全 プ ロ セ ス は 一 つ の 制 御 端 末 を 共 有 す る 。 セ ッ シ ョ ン リ ー ダ ー が 最 初 に 端 末 を オ ー プ ン し た 際 に 制 御 端 末 は 設 定 さ れ る ( open (2) の 呼 び 出 し で O_NOCTTY フ ラ グ が 指 定 さ れ た 場 合 を 除 く )。 一 つ の 端 末 は 、 最 大 で も 一 つ の セ ッ シ ョ ン の 制 御 端 末 に し か な れ な い 。

一 つ の セ ッ シ ョ ン の ジ ョ ブ の 中 で 、 フ ォ ア グ ラ ウ ン ド ジ ョ ブ に な れ る の は 最 大 で も 一 つ で 、 そ の セ ッ シ ョ ン の 他 の ジ ョ ブ は バ ッ ク グ ラ ウ ン ド ジ ョ ブ で あ る 。 フ ォ ア グ ラ ウ ン ド ジ ョ ブ だ け が 端 末 か ら の 読 み 込 み を 行 え る 。 バ ッ ク グ ラ ウ ン ド の プ ロ セ ス が 端 末 か ら 読 み 込 み を 行 お う と し た 場 合 、 フ ォ ア グ ラ ウ ン ド ジ ョ ブ を 停 止 さ せ る シ グ ナ ル で あ る SIGTTIN が 所 属 す る プ ロ セ ス グ ル ー プ に 対 し て 送 信 さ れ る 。 端 末 に TOSTOP フ ラ グ が セ ッ ト さ れ て い た 場 合 ( termios (3) 参 照 )、 フ ォ ア グ ラ ウ ン ド ジ ョ ブ だ け が 端 末 へ の 書 き 込 み を 行 え る 。 バ ッ ク グ ラ ウ ン ド の プ ロ セ ス が 端 末 へ の 書 き 込 み を 行 お う と し た 場 合 、 フ ォ ア グ ラ ウ ン ド ジ ョ ブ を 停 止 さ せ る シ グ ナ ル で あ る SIGTTOU が 生 成 さ れ る 。 シ グ ナ ル を 生 成 す る 端 末 キ ー (例 え ば 中 断 キ ー 、 通 常 は control-C) が 押 さ れ た 場 合 、 そ の シ グ ナ ル は フ ォ ア グ ラ ウ ン ド ジ ョ ブ の プ ロ セ ス に 送 信 さ れ る 。

様 々 な シ ス テ ム コ ー ル や ラ イ ブ ラ リ 関 数 で 、 プ ロ セ ス グ ル ー プ の 全 メ ン バ ー に 対 し て 操 作 を 行 う こ と が で き る 。 例 え ば 、 kill (2), killpg (3), getpriority (2), setpriority (2), ioprio_get (2), ioprio_set (2), waitid (2), waitpid (2) な ど 。 fcntl (2) の 操 作 F_GETOWN , F_GETOWN_EX , F_SETOWN , F_SETOWN_EX の 議 論 も 参 照 。

ユ ー ザ ー ID と グ ル ー プ ID

各 プ ロ セ ス は 、 数 種 類 の ユ ー ザ ー ID と グ ル ー プ ID を 持 つ 。 ユ ー ザ ー ID、 グ ル ー プ ID は 整 数 で 、 そ れ ぞ れ uid_t , gid_t 型 で 表 現 さ れ る (こ れ ら は <sys/types.h> で 定 義 さ れ て い る )。

Linux で は 、 各 プ ロ セ ス は 以 下 の よ う な 種 類 の ユ ー ザ ー ID と グ ル ー プ ID を 持 つ 。

*

実 ユ ー ザ ー ID と 実 グ ル ー プ ID。 こ れ ら の ID に よ り プ ロ セ ス の 所 有 者 が 決 定 さ れ る 。 プ ロ セ ス が 自 分 の 実 ユ ー ザ ー ID、 実 グ ル ー プ ID を 取 得 す る に は 、 そ れ ぞ れ getuid (2), getgid (2) を 使 用 す る 。

*

実 効 ユ ー ザ ー ID と 実 効 グ ル ー プ ID。 こ れ ら の ID は 、 メ ッ セ ー ジ キ ュ ー 、 共 有 メ モ リ ー 、 セ マ フ ォ な ど の 共 有 リ ソ ー ス に ア ク セ ス し よ う と し た 際 に そ の プ ロ セ ス が ア ク セ ス 許 可 を 持 っ て い る か を カ ー ネ ル が 判 定 す る の に 使 用 さ れ る 。 ほ と ん ど の UNIX シ ス テ ム で は 、 こ れ ら の ID は フ ァ イ ル へ の ア ク セ ス 時 の ア ク セ ス 許 可 の 判 定 に も 使 用 さ れ る 。 し か し な が ら 、 Linux で は フ ァ イ ル へ の ア ク セ ス 許 可 の 判 定 に は 後 述 の フ ァ イ ル シ ス テ ム ID が 使 用 さ れ る 。 プ ロ セ ス が 自 分 の 実 効 ユ ー ザ ー ID、 実 効 グ ル ー プ ID を 取 得 す る に は 、 そ れ ぞ れ geteuid (2), getegid (2) を 使 用 す る 。

*

保 存 (saved) set-user-ID と 保 存 set-group-ID。 こ れ ら の ID は 、 set-user-ID や set-group-ID さ れ た プ ロ グ ラ ム に お い て 、 プ ロ グ ラ ム の 実 行 時 に 設 定 さ れ た 実 効 ID の コ ピ ー を 保 存 す る た め に 使 用 さ れ る ( execve (2) 参 照 )。 set-user-ID プ ロ グ ラ ム は 、 実 効 ユ ー ザ ー ID を 実 ユ ー ザ ー ID と 保 存 set-user-ID の 間 で 行 っ た り 来 た り 切 り 替 え る こ と で 、 特 権 を 得 た り 落 と し た り で き る 。 こ の 切 り 替 え は seteuid (2), setreuid (2), setresuid (2) を 呼 び 出 す こ と で 実 行 で き る 。 set-group-ID プ ロ グ ラ ム は 、 setegid (2), setregid (2), setresgid (2) を 使 っ て 同 様 の こ と が で き る 。 プ ロ セ ス が 自 分 の 保 存 set-user-ID、 保 存 set-group-ID を 取 得 す る に は 、 getresuid(2), getresgids (2) を そ れ ぞ れ 使 用 す る 。

*

フ ァ イ ル シ ス テ ム ユ ー ザ ー ID と フ ァ イ ル シ ス テ ム グ ル ー プ ID (Linux 固 有 )。 こ れ ら の ID は 、 後 述 の 補 助 グ ル ー プ ID と 組 み 合 わ せ て 使 用 さ れ 、 フ ァ イ ル へ の ア ク セ ス 権 の 決 定 に 利 用 さ れ る 。 詳 細 は path_resolution (7) を 参 照 。 プ ロ セ ス の 実 効 ID (ユ ー ザ ー ID や グ ル ー プ ID) が 変 更 さ れ る た び に 、 カ ー ネ ル は 自 動 的 に 対 応 す る フ ァ イ ル シ ス テ ム ID を 同 じ 値 に 変 更 す る 。 そ の 結 果 、 フ ァ イ ル シ ス テ ム ID は 通 常 は 対 応 す る 実 効 ID と 同 じ 値 と な り 、 フ ァ イ ル の ア ク セ ス 権 の チ ェ ッ ク 方 法 は Linux と 他 の UNIX シ ス テ ム で 同 じ で あ る 。 フ ァ イ ル シ ス テ ム ID は 実 効 ID と は 異 な る 値 に す る こ と が で き 、 変 更 は setfsuid (2) と setfsgid (2) を 呼 び 出 し て 行 う 。

*

補 助 グ ル ー プ ID。 こ の ID は 、 フ ァ イ ル や 他 の 共 有 リ ソ ー ス へ の ア ク セ ス 時 に ア ク セ ス 許 可 の チ ェ ッ ク に 使 用 さ れ る 、 追 加 の グ ル ー プ ID の 集 合 で あ る 。 カ ー ネ ル 2.6.4 よ り 前 の Linux で は 、 一 つ の プ ロ セ ス あ た り の 補 助 グ ル ー プ の メ ン バ ー 数 は 最 大 で 32 で あ る 。 カ ー ネ ル 2.6.4 以 降 で は 、 一 つ の プ ロ セ ス あ た り の 補 助 グ ル ー プ の メ ン バ ー 数 は 最 大 で 65536 で あ る 。 sysconf(_SC_NGROUPS_MAX) を 呼 び 出 す こ と で 、 あ る プ ロ セ ス が メ ン バ ー と な る こ と が で き る 可 能 性 の あ る 補 助 グ ル ー プ 数 を 知 る こ と が で き る 。 プ ロ セ ス は 、 自 分 の 補 助 グ ル ー プ ID の 集 合 を getgroups (2) で 取 得 で き る 。

fork (2) で 生 成 さ れ た 子 プ ロ セ ス は 親 プ ロ セ ス の ユ ー ザ ー ID と グ ル ー プ ID を 継 承 す る 。 execve (2) の 間 、 プ ロ セ ス の 実 ユ ー ザ ー /グ ル ー プ ID と 補 助 グ ル ー プ ID 集 合 は 不 変 で あ る 。 実 効 ID と 保 存 セ ッ ト ID は 変 更 さ れ る 可 能 性 が あ る ( execve (2) で 説 明 さ れ て い る )。

上 記 の 目 的 以 外 に も 、 プ ロ セ ス の ユ ー ザ ー ID は 他 の 様 々 な 場 面 で 利 用 さ れ る 。

*

シ グ ナ ル を 送 る 許 可 の 判 定 時 ( kill (2) 参 照 )

*

プ ロ セ ス の ス ケ ジ ュ ー リ ン グ 関 連 の パ ラ メ ー タ ー (nice 値 、 リ ア ル タ イ ム ス ケ ジ ュ ー リ ン グ ポ リ シ ー や 優 先 度 、 CPU affinity、 入 出 力 優 先 度 ) の 設 定 許 可 の 判 定 時 。 ス ケ ジ ュ ー リ ン グ 関 連 の パ ラ メ ー タ ー 設 定 に は setpriority (2), sched_setaffinity (2), sched_setscheduler (2), sched_setparam (2), sched_setattr (2), ioprio_set (2) が 使 用 さ れ る 。

*

リ ソ ー ス 上 限 の チ ェ ッ ク 時 ( getrlimit (2) 参 照 )

*

プ ロ セ ス が 生 成 で き る inotify イ ン ス タ ン ス 数 の 上 限 の チ ェ ッ ク 時 ( inotify (7) 参 照 )

Modifying process user and group IDs

Subject to rules described in the relevant manual pages, a process can use the following APIs to modify its user and group IDs:
setuid
(2) ( setgid (2))

Modify the process’s real (and possibly effective and saved-set) user (group) IDs.

seteuid (2) ( setegid (2))

Modify the process’s effective user (group) ID.

setfsuid (2) ( setfsgid (2))

Modify the process’s filesystem user (group) ID.

setreuid (2) ( setregid (2))

Modify the process’s real and effective (and possibly saved-set) user (group) IDs.

setresuid (2) ( setresgid (2))

Modify the process’s real, effective, and saved-set user (group) IDs.

setgroups (2)

Modify the process’s supplementary group list.

Any changes to a process’s effective user (group) ID are automatically carried over to the process’s filesystem user (group) ID. Changes to a process’s effective user or group ID can also affect the process "dumpable" attribute, as described in prctl (2).

Changes to process user and group IDs can affect the capabilities of the process, as described in capabilities (7).

準 拠

プ ロ セ ス ID、 親 プ ロ セ ス ID、 プ ロ セ ス グ ル ー プ ID、 セ ッ シ ョ ン ID は POSIX.1 で 規 定 さ れ て い る 。 実 ID、 実 効 ID、 保 存 セ ッ ト ID の ユ ー ザ ー ID / グ ル ー プ ID お よ び 補 助 グ ル ー プ ID は POSIX.1 で 規 定 さ れ て い る 。 フ ァ イ ル シ ス テ ム ユ ー ザ ー ID / グ ル ー プ ID は Linux に よ る 拡 張 で あ る 。

注 意

Various fields in the /proc/[pid]/status file show the process credentials described above. See proc (5) for further information.

POSIX の ス レ ッ ド 仕 様 で は 、 こ れ ら の 識 別 子 が プ ロ セ ス 内 の 全 ス レ ッ ド で 共 有 さ れ る こ と を 求 め て い る 。 し か し な が ら 、 カ ー ネ ル の レ ベ ル で は 、 Linux は ス レ ッ ド 毎 に 別 々 の ユ ー ザ ー と グ ル ー プ に 関 す る 識 別 子 を 管 理 し て い る 。 NPTL ス レ ッ ド 実 装 が 、 (例 え ば setuid (2), setresuid (2) な ど の 呼 び 出 し に よ る ) ユ ー ザ ー や グ ル ー プ に 関 す る 識 別 子 に 対 す る 変 更 が プ ロ セ ス 内 の 全 て の POSIX ス レ ッ ド に 対 し て 反 映 さ れ る こ と を 保 証 す る た め の 処 理 を 行 っ て い る 。 詳 細 は nptl (7) を 参 照 。

関 連 項 目

bash (1), csh (1), groups (1), id (1), newgrp (1), ps (1), runuser (1), setpriv (1), sg (1), su (1), access (2), execve (2), faccessat (2), fork (2), getgroups (2), getpgrp (2), getpid (2), getppid (2), getsid (2), kill (2), setegid (2), seteuid (2), setfsgid (2), setfsuid (2), setgid (2), setgroups (2), setpgid (2), setresgid (2), setresuid (2), setsid (2), setuid (2), waitpid (2), euidaccess (3), initgroups (3), killpg (3), tcgetpgrp (3), tcgetsid (3), tcsetpgrp (3), group (5), passwd (5), shadow (5), capabilities (7), namespaces (7), path_resolution (7), pid_namespaces (7), pthreads (7), signal (7), system_data_types (7), unix (7), user_namespaces (7), sudo (8)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。