版权所有 © 2014 tutorialspoint
chmod, fchmod - 更改文件权限
#include <sys/types.h> #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fildes, mode_t mode);
int chmod(const char *path, mode_t mode); int fchmod(int fildes, mode_t mode);
更改由path给定或由fildes引用的文件的模式。
模式通过或以下方式指定
调用进程的有效 UID 必须与文件的拥有者匹配,或者进程必须具有特权(Linux:它必须具有CAP_FOWNER功能)。
如果调用进程没有特权(Linux:没有CAP_FSETID功能),并且文件的组与进程的有效组 ID 或其任何补充组 ID 不匹配,则 S_ISGID 位将被关闭,但这不会导致返回错误。
作为安全措施,根据文件系统,如果写入文件,则可能会关闭 set-user-ID 和 set-group-ID 执行位。(在 Linux 上,如果写入进程没有CAP_FSETID功能,则会发生这种情况。)在某些文件系统上,只有超级用户才能设置粘滞位,这可能具有特殊含义。对于粘滞位,以及目录上的 set-user-ID 和 set-group-ID 位,请参见stat(2)。
在 NFS 文件系统上,限制权限会立即影响已打开的文件,因为访问控制是在服务器上完成的,但文件由客户端维护。如果在客户端启用了属性缓存,则扩展权限可能会延迟到其他客户端。
成功时,返回零。发生错误时,返回 -1,并且errno被适当地设置。
根据文件系统,可以返回其他错误。chmod() 的更常见的错误列在下面
4.4BSD、SVr4、POSIX.1-2001。
chown (2)
execve (2)
fchmodat (2)
open (2)
path_resolution (2)
stat (2)
广告