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


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考资料     讨论论坛     关于TP  

setfsgid() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

setfsgid - 设置用于文件系统检查的组标识

概要

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

int setfsgid(uid_t fsgid);

描述

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

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

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

返回值

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

符合标准

setfsgid()是Linux特有的,不应在旨在可移植的程序中使用。它自Linux 1.1.44和libc 4.7.6起存在。

缺陷

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

备注

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

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

参见



previous next Printer Friendly

广告


  

广告



广告