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

广告


  

广告



广告