日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SETUID(2) FreeBSD システムコールマニュアル SETUID(2)
名称
setuid, seteuid, setgid, setegid -- ユーザ ID とグループ ID を設定する
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <unistd.h>
int
setuid(uid_t uid);
int
seteuid(uid_t euid);
int
setgid(gid_t gid);
int
setegid(gid_t egid);
解説
setuid() システムコールは、現在のプロセスの実ユーザ ID と実効ユーザ ID と
退避セットユーザ ID (set-user-ID) を指定された値に設定します。setuid() シ
ステムコールは、指定された ID がプロセスの実ユーザ ID または実効ユーザ ID
と等しいなら、または、実効ユーザ ID がスーパユーザのものであるなら、許可
されます。
setgid() システムコールは、現在のプロセスの実グループ ID と実効グループ
ID と退避セットグループ ID (set-group-ID) を指定された値に設定します。
setgid() システムコールは、指定された ID がプロセスの実グループ ID または
実効グループ ID と等しいなら、または、実効ユーザ ID がスーパユーザのもの
であるなら、許可されます。
seteuid() システムコール (setegid()) は、現在のプロセスの実効ユーザ ID
(グループ ID) を設定します。実効ユーザ ID は、実ユーザ ID または退避セッ
トユーザ ID (set-user-ID) (intro(2) と execve(2) を参照) の値に設定されま
す。このように、セットユーザ ID (set-user-ID) の実行形式の実効ユーザ ID
は、実ユーザ ID に切り換えることによって交換され、次に、セットユーザ ID
(set-user-ID) の前の値に戻ることによって再有効化されます。同様に、実効グ
ループ ID は、実グループ ID または退避セットグループ ID (set-group-ID) の
値に設定されます。
戻り値
成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、
グローバル変数 errno にエラーを示す値が設定されます。
エラー
システムコールは、次の場合に失敗します:
[EPERM] ユーザがスーパユーザではありません、そして指定された
ID が実 ID、実効 ID、または退避 ID ではありません。
関連項目
getgid(2), getuid(2), issetugid(2), setregid(2), setreuid(2)
規格
setuid() と setgid() システムコールは、付録 B.4.2.2 の許可された拡張で定
義されなかった _POSIX_SAVED_IDS とともに ISO/IEC 9945-1:1990
(``POSIX.1'') 仕様に準拠しています。seteuid() と setegid() システムコール
は、_POSIX_SAVED_IDS の POSIX の概念に基づいた拡張であり、規格の将来のリ
ビジョンに対して提案されています。
歴史
setuid() 関数は、Version 1 AT&T UNIX で登場しました。setgid() 関数は、
Version 4 AT&T UNIX で登場しました。
セキュリティに関する考察
ファイルへの読み込みと書き込みパーミッションは、open(2) への呼び出しで判
断されます。いったんファイル記述子が、オープンされると、落されている特権
は、たとえ指定されたユーザ ID にファイルへの読み込みまたは書き込みパー
ミッションがなくても、プロセスの読み込み/書き込みパーミッションに影響しま
せん。これらのファイルは、通常、実行されたあらゆる新しいプロセスでオープ
ンされたままとなり、潜在的に注意を払うべきデータをユーザが読み込むか、ま
たは修正することができる結果となります。
これらのファイルを exec(3) 呼び出しの後にオープンされたままとなることか
ら、防止するためには、必ず close-on-exec フラグを設定してください:
void
pseudocode(void)
{
int fd;
/* ... */
fd = open("/path/to/sensitive/data", O_RDWR | O_CLOEXEC);
if (fd == -1)
err(1, "open");
/* ... */
execve(path, argv, environ);
}
FreeBSD 13.2 December 15, 2015 FreeBSD 13.2