「setuid」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「Unix (FreeBSD, Linux など) では、プロセス は、なんらかの UID (ユーザー) と呼ばれるID番号が設定されて、実行され...」)
(相違点なし)

2013年9月14日 (土) 18:25時点における版

Unix (FreeBSD, Linux など) では、プロセス は、なんらかの UID (ユーザー) と呼ばれるID番号が設定されて、実行されます。setuid (SetUID) とは、一時的(もしくは、ずっと)にUIDを他の UID に変更する機能です。

読み方

setuid
せっとゆーあいでぃー

概要

プロセス には、UIDGID (グループのID) が設定されています。

Apache HTTP Serverhttpd は、root 権限で実行されますが、httpd の子プロセスは、www などの別のユーザーで実行されます。これは、 setuid で UID を変更することで実現されます。

最小権限の原則 を参照してください。

the setuid bit

Unixパーミッション には、 the setuid bit があります。 SetUID が与えられている場合、ファイルのオーナーの権限でコマンドが実行できます。 passwd コマンドでは、ユーザーが自身のパスワードを変更しますが、それは、root ユーザーの [shadow]] ファイル/ master.passwd を更新します。 ユーザーは、直接、それらのファイルを編集できませんが、passwd コマンドを通して、自身のエントリを変更ができます。これを実現するのが the setuid bit です。

/path/to/command に SetUID を付与するには、chmod コマンドを使います。

chmod u+s /path/to/command

Cのプロトタイプ

FreeBSD では、libc で以下のシステムコールが提供されます。

#include <sys/types.h>
#include <unistd.h>
 
int
setuid(uid_t uid);
 
int
seteuid(uid_t euid);
 
int
setgid(gid_t gid);
 
int
setegid(gid_t egid);

使い方

関連項目