setresuid - システムコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- エラー
- 準拠
- 履歴
- 注意
- 関連項目
名前
setresuid, setresgid - ユーザやグループの 実、実効、保存 ID を設定する
書式
#define _GNU_SOURCE
#include <unistd.h>
int setresuid(uid_t
ruid
, uid_t
euid
, uid_t
suid
);
int setresgid(gid_t
rgid
, gid_t
egid
, gid_t
sgid
);
説明
setresuid
()は呼び出したプロセスの実 (real) ユーザーID、実効 (effective) ユーザーID、
保存 set-user-ID を設定する。
非特権ユーザーのプロセスは、その実 UID、実効 UID、保存 set-user-ID を、
現在の実 UID、現在の実効 UID、現在の保存 set-user-ID
のどれかに変更することができる:
特権プロセス (Linux では CAP_SETUID ケーパビリティ (capability) を持つ
プロセス) は、実 UID、実効 UID、保存 set-user-ID を任意の値に設定できる。
パラメーターのどれかが -1 の場合はその値は変更されずに残される。
実 UID、実効 UID、保存 set-user-ID にどんな変更が行われたかに関わらず、
ファイルシステム UID は常に実効 UID (可能であれば変更後の新しい実効 UID)
と同じ値に設定される。
全く同じように、
setresgid
()は呼び出したプロセスの実 GID、実効 GID、保存 set-group-ID を設定する
(さらにファイルシステム GID を実効 GID と同じ値に修正する)。
非特権プロセスは同様の制限を受ける。
返り値
成功した場合は 0 が返される。エラーの場合は -1 が返され、
errno
が適切に設定される。
エラー
-
EAGAIN
-
uid
が現在のユーザー ID と違う値で、
この呼び出しにより ユーザー ID が NPROC rlimit を超えてしまう。
-
EPERM
-
呼び出したプロセスが特権を持たないのに
(CAP_SETUID ケーパビリティを持たないのに)、
ID を許されていない値に変更しようとした。
準拠
これらのコールは非標準である。
HP-UX や BSD 系のいくつかにも存在する。
履歴
このシステム・コールは HP-UX で最初に導入された。
Linux ではバージョン 2.1.44 より利用可能になった。
最近は (Linux バイナリ・エミュレーションのために) FreeBSD にも用意されている。
注意
HP-UX や FreeBSD では
<unistd.h>
にプロトタイプが存在する。
Linux では、glibc 2.3.2 以降で _GNU_SOURCE を定義することにより、
プロトタイプが与えられる。
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする