| 総合手引 | セクション 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.
| “ | Do you laugh when the waiter drops a tray full of dishes? Unix weenies do. They're the first ones to laugh at hapless users, trying to figure out an error message that doesn't have anything to do with what they just typed. | ” |
| — The Unix Haters' handbook | ||