setfsuid() - Unix,Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

setfsuid() - Unix,Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

setfsuid - 设置用于文件系统检查的用户标识

语法

#include <unistd.h> /* glibc 使用 <sys/fsuid.h> */

int setfsuid(uid_t fsuid);

描述

系统调用 setfsuid() 设置 Linux 内核用于检查所有文件系统访问的用户 ID。通常,fsuid 的值会覆盖有效用户 ID 的值。事实上,每当有效用户 ID 更改时,fsuid 也会更改为有效用户 ID 的新值。

显式调用 setfsuid() 和 setfsgid() 通常仅由诸如 Linux NFS 服务器之类的程序使用,这些程序需要更改用于文件访问的用户和组 ID,而无需相应更改真实和有效用户和组 ID。程序(如 NFS 服务器)的正常用户 ID 的更改是一个安全漏洞,可能会使其暴露于不需要的信号。(但请参见下文。)

只有当调用者是超级用户或 fsuid 与真实用户 ID、有效用户 ID、已保存的 set-user-ID 或 fsuid 的当前值匹配时,setfsuid() 才会成功。

返回值

成功时,返回 fsuid 的先前值。出错时,返回 fsuid 的当前值。

符合标准

setfsuid() 是 Linux 特定的,不应在旨在可移植的程序中使用。它自 Linux 1.1.44 以来存在,并且自 libc 4.7.6 以来存在于 libc 中。

错误

不会向调用者返回任何类型的错误消息。至少,当调用失败时(因为调用者缺少 CAP_SETUID 功能),应返回 EPERM

备注

当 glibc 确定参数不是有效的用户 ID 时,它将返回 -1 并将 errno 设置为 EINVAL,而不会尝试系统调用。

请注意,在此系统调用引入时,进程可以向具有相同有效用户 ID 的进程发送信号。如今,信号权限处理略有不同。

参见



previous next Printer Friendly

广告


  

广告



广告