| 総合手引 | セクション 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.
| “ | Modern Unix impedes progress in computer science, wastes billions of dollars, and destroys the common sense of many who seriously use it. | ” |
| — The Unix Haters' handbook | ||