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下,自版本2.3.2起,glibc提供了原型,前提是定義了_GNU_SOURCE。

參見



previous next Printer Friendly

廣告


  

廣告



廣告