SETUID
Section: System Calls (2)
索引
jman
BSD mandoc
索引
名称
setuid
seteuid
setgid
setegid
- ユーザ ID とグループ ID を設定する
索引
ライブラリ
Lb libc
索引
書式
In sys/types.h
In unistd.h
Ft int
Fn setuid uid_t uid
Ft int
Fn seteuid uid_t euid
Ft int
Fn setgid gid_t gid
Ft int
Fn setegid gid_t egid
索引
解説
Fn setuid
システムコールは、現在のプロセスの実ユーザ ID と実効ユーザ ID と
退避ユーザ ID を指定した値に設定します。
Fn setuid
システムコールが許容されるのは、指定の ID がプロセスの実ユーザ ID
または実効ユーザ ID に等しい場合、
または実効ユーザ ID がスーパユーザのものと等しい場合です。
Fn setgid
システムコールは、現在のプロセスの実グループ ID と実効グループ ID と
退避グループ ID を指定した値に設定します。
Fn setgid
システムコールが許容されるのは、指定の ID がプロセスの実グループ ID
または実効グループ ID に等しい場合、
または実効ユーザ ID がスーパユーザのものと等しい場合です。
Fn seteuid
システムコール
(Fn setegid
)
は、現在のプロセスの実効ユーザ (グループ ID) を設定します。
実効ユーザ ID は実ユーザ ID または退避ユーザ ID (
intro(2)
と
execve(2)
を参照 ) の値に設定できます。
これを利用し、ユーザ ID 設定された実行可能ファイルの実効ユーザ ID を
実ユーザ ID に切り替えた後に、ユーザ ID 設定の値に戻ることで、
元の権限を得ることができます。
同じように、実効グループ ID は、
実グループ ID または退避グループ ID の値に設定できます。
索引
戻り値
Rv -std
索引
エラー
本システムコールは次の場合に失敗します:
- Bq Er EPERM
-
ユーザがスーパユーザでない場合、または指定された uid がその実 ID、
実効 ID、または退避 ID でない場合。
索引
セキュリティに関する考察
ファイルへの読取りと書込み許可は、
open(2)
が呼ばれた時に判断されます。
一度ファイル記述子がオープンされると、権限を落してもそのプロセスの
読取りまたは書込み許可には影響しません。
指定されたユーザ ID に、そのファイルへの読取りまたは書込み許可が
なくともです。
通常これらのファイルは、新しいプロセスの実行時にオープンされたままとなり、
その結果、ユーザがもしかすると要注意であるデータを読んだり修正したり
できてしまいます。
これらのファイルが
exec(3)
呼び出しの後でもオープンされたままにされるのを防ぐには、
close-on-exec フラグを設定するようにしてください:
void
pseudocode(void)
{
int fd;
/* ... */
fd = open("/path/to/sensitive/data", O_RDWR);
if (fd == -1)
err(1, "open");
/*
* close-on-exec フラグの設定; さらなる情報は fcntl(2) を参照。
*/
if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
err(1, "fcntl(F_SETFD)");
/* ... */
execve(path, argv, environ);
}
索引
関連項目
getgid(2),
getuid(2),
issetugid(2),
setregid(2),
setreuid(2)
索引
規格
Fn setuid
システムコールと
Fn setgid
システムコールは
St -p1003.1-90
仕様と互換性があります。
ただし、
_POSIX_SAVED_IDS
は付録 B.4.2.2 の許可された拡張で定義されていません。
Fn seteuid
システムコールと
Fn setegid
システムコールは、
_POSIX_SAVED_IDS
の
POSIX
コンセプトを基礎にして拡張してあり、規格の将来の改定用に提案されています。
索引
歴史
Fn setuid
関数と
Fn setgid
関数は
AT&T System
v7
で登場しました。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- 戻り値
-
- エラー
-
- セキュリティに関する考察
-
- 関連項目
-
- 規格
-
- 歴史
-
Time: 07:06:30 GMT, January 12, 2009