Manpages

名 前

setfsgid − フ ァ イ ル シ ス テ ム の チ ェ ッ ク に 用 い ら れ る グ ル ー プ ID を 設 定 す る

書 式

#include <sys/fsuid.h>

int setfsgid(uid_t fsgid);

説 明

シ ス テ ム コ ー ル setfsgid() は 、 呼 び 出 し 元 の フ ァ イ ル シ ス テ ム グ ル ー プ ID — フ ァ イ ル シ ス テ ム へ の 全 て の ア ク セ ス の チ ェ ッ ク に お い て Linux カ ー ネ ル が 使 用 す る グ ル ー プ ID — の 値 を 変 更 す る 。 通 常 は フ ァ イ ル シ ス テ ム グ ル ー プ ID の 値 は 実 効 (effective) グ ル ー プ ID と 同 じ に な る 。 実 際 、 実 効 グ ル ー プ ID が 変 更 さ れ る 度 に フ ァ イ ル シ ス テ ム グ ル ー プ ID も ま た 新 し い 実 効 グ ル ー プ ID の 値 に 変 更 さ れ る 。 通 常 、 setfsuid() や setfsgid() を 明 示 的 に 呼 び 出 す の は 、 Linux NFS サ ー バ ー の よ う に 、 フ ァ イ ル ア ク セ ス に 用 い る ユ ー ザ ー ID / グ ル ー プ ID を 変 更 し な け れ ば な ら な い が 、 対 応 す る 実 (real)/実 効 (effective) ユ ー ザ ー ID / グ ル ー プ ID は 変 更 し た く な い よ う な プ ロ グ ラ ム に 限 ら れ る 。 NFS サ ー バ ー の よ う な プ ロ グ ラ ム で 、 通 常 の ユ ー ザ ー ID を 変 更 す る と 、 プ ロ セ ス を 望 ま な い シ グ ナ ル に さ ら す 可 能 性 が あ り 、 セ キ ュ リ テ ィ ホ ー ル に な る 。 (下 記 参 照 )

setfsgid() は 、 ス ー パ ー ユ ー ザ ー に よ っ て 呼 び 出 さ れ た 場 合 か 、 fsgid が 呼 び 出 し 元 の 実 グ ル ー プ ID、 実 効 グ ル ー プ ID、 保 存 セ ッ ト グ ル ー プ ID (saved set−group−ID)、 現 在 の フ ァ イ ル シ ス テ ム グ ル ー プ ID の 値 の い ず れ か に 一 致 す る 場 合 に の み 成 功 す る 。

返 り 値

成 功 時 も 失 敗 時 も 、 こ の 呼 び 出 し は 直 前 の 呼 び 出 し 元 の フ ァ イ ル シ ス テ ム グ ル ー プ ID の 値 を 返 す 。

バ ー ジ ョ ン

こ の シ ス テ ム コ ー ル は バ ー ジ ョ ン 1.2 以 降 の Linux に 存 在 す る 。

準 拠

setfsgid() は Linux 特 有 で あ り 、 移 植 を 想 定 し た プ ロ グ ラ ム で 使 用 し て は い け な い 。

注 意

glibc が 引 き 数 が グ ル ー プ ID と し て 不 正 だ と 判 断 し た 場 合 は 、 シ ス テ ム コ ー ル を 行 わ ず errnoEINVAL を 設 定 し て −1 が 返 さ れ る 。 こ の シ ス テ ム コ ー ル が 導 入 さ れ た 当 時 、 プ ロ セ ス は 同 じ 実 効 ユ ー ザ ー IDの プ ロ セ ス へ シ グ ナ ル を 送 る こ と が で き た 。 今 日 で は 、 シ グ ナ ル 送 信 権 限 の 扱 い は か な り 違 う も の に な っ て い る 。 な ぜ 今 日 で は setfsuid(2)setfsgid() の 両 者 が 不 要 な の か の 議 論 に つ い て は setfsuid(2) を 参 照 の こ と 。 元 々 の Linux の setfsgid() シ ス テ ム コ ー ル は 16 ビ ッ ト の グ ル ー プ ID だ け に 対 応 し て い た 。 そ の 後 、 Linux 2.4 で 、 32 ビ ッ ト の ID に 対 応 し た setfsgid32() が 追 加 さ れ た 。 glibc の setfsgid() の ラ ッ パ ー 関 数 は カ ー ネ ル バ ー ジ ョ ン に よ る こ の 違 い を 吸 収 し て い る 。

バ グ

い か な る 種 類 の エ ラ ー メ ッ セ ー ジ も 返 さ ず 、 成 功 し た 場 合 も 失 敗 し た 場 合 も 呼 び 出 し は 同 じ 値 を 返 す た め 、 呼 び 出 し が 成 功 し た か 失 敗 し た か を 直 接 判 定 す る こ と は で き な い 。 そ の 代 わ り 、 直 前 の setfsgid() の 呼 び 出 し が フ ァ イ ル シ ス テ ム グ ル ー プ ID を 変 更 し た か ど う か を 判 定 す る た め に 、 呼 び 出 し 元 は こ の 後 に setfsgid(−1) な ど を 呼 び 出 し て 返 り 値 を 見 な け れ ば な ら な い (setfsgid(−1) は 常 に 失 敗 す る )。 最 低 で も 、 失 敗 し た 場 合 は EPERM く ら い は 返 す べ き で あ る (呼 び 出 し 元 に は CAP_SETGID ケ ー パ ビ リ テ ィ が な か っ た の だ か ら )。

関 連 項 目

kill(2), setfsuid(2), capabilities(7), credentials(7)

こ の 文 書 に つ い て

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

COMMENTS