総合手引 | セクション 2 | English | Deutsch | オプション |
#include <sys/types.h>
#include <unistd.h>
setgid() システムコールは、現在のプロセスの実グループ ID と実効グループ ID と 退避グループ ID を指定した値に設定します。 setgid() システムコールが許容されるのは、指定の ID がプロセスの実グループ ID または実効グループ ID に等しい場合、 または実効ユーザ ID がスーパユーザのものと等しい場合です。
seteuid() システムコール (setegid()) は、現在のプロセスの実効ユーザ (グループ ID) を設定します。 実効ユーザ ID は実ユーザ ID または退避ユーザ ID ( intro(2) と execve(2) を参照 ) の値に設定できます。 これを利用し、ユーザ ID 設定された実行可能ファイルの実効ユーザ ID を 実ユーザ ID に切り替えた後に、ユーザ ID 設定の値に戻ることで、 元の権限を得ることができます。 同じように、実効グループ ID は、 実グループ ID または退避グループ ID の値に設定できます。
[EPERM] | |
ユーザがスーパユーザでない場合、または指定された uid がその実 ID、 実効 ID、または退避 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); }
SETUID (2) | June 4, 1993 |
総合手引 | セクション 2 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | How do you pronounce UNIX ? You Nix ! | ” |