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_IDSPOSIX コンセプトを基礎にして拡張してあり、規格の将来の改定用に提案されています。  

索引

歴史

Fn setuid 関数と Fn setgid 関数は AT&T System v7 で登場しました。


 

索引

Index

名称
ライブラリ
書式
解説
戻り値
エラー
セキュリティに関する考察
関連項目
規格
歴史

jman



Time: 07:06:30 GMT, January 12, 2009