setresuid() - Unix,Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於 TP  

setresuid() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

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() 設定當前程序的真實使用者 ID、有效使用者 ID 和已儲存的 set-user-ID。

非特權使用者程序可以將真實 UID、有效 UID 和已儲存的 set-user-ID 分別更改為以下值之一:當前真實 UID、當前有效 UID 或當前已儲存的 set-user-ID。

特權程序(在 Linux 上,擁有 CAP_SETUID 功能的程序)可以將真實 UID、有效 UID 和已儲存的 set-user-ID 設定為任意值。

如果其中一個引數等於 -1,則相應的值不會更改。

無論對真實 UID、有效 UID 和已儲存的 set-user-ID 進行哪些更改,檔案系統 UID 始終設定為與(可能新的)有效 UID 相同的值。

完全類似地,setresgid() 設定當前程序的真實 GID、有效 GID 和已儲存的 set-group-ID(並且始終將檔案系統 GID 修改為與有效 GID 相同),對非特權程序有相同的限制。

返回值

成功時,返回零。發生錯誤時,返回 -1,並且 errno 被相應地設定。

錯誤

標籤描述
EAGAIN uid 與當前 UID 不匹配,並且此呼叫會使該使用者 ID 超過其 NPROC rlimit。
EPERM 呼叫程序沒有特權(沒有 CAP_SETUID 功能)並且嘗試將 ID 更改為不允許的值。

符合標準

這些呼叫是非標準的;它們也出現在 HP-UX 和一些 BSD 上。

歷史

此係統呼叫最初是在 HP-UX 中引入的。它自 Linux 2.1.44 起在 Linux 上可用。如今它也存在於 FreeBSD 中(用於模擬 Linux 二進位制檔案)。

備註

在 HP-UX 和 FreeBSD 下,原型位於 <unistd.h> 中。在 Linux 下,原型由 glibc 自版本 2.3.2 起提供,前提是定義了 _GNU_SOURCE。

參見



previous next Printer Friendly

廣告


  

廣告



廣告