Linux系统编程12-chmod
在 Linux 中,chmod
函数用于更改文件或目录的访问权限。
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
修改文件的权限
参数:
- pathname: 需要修改文件的路径
- mode: 需要修改的权限值,八进制的数
返回: 0 成功 , -1 失败
权限模式是一个八进制的数,它包含了三种权限(读、写、执行)分别对应的值为 4、2、1。因此,它们的组合可以得到不同的权限值,例如:
- 只读权限:
0444
或S_IRUSR | S_IRGRP | S_IROTH
- 只写权限:
0222
或S_IWUSR | S_IWGRP | S_IWOTH
- 可执行权限:
0111
或S_IXUSR | S_IXGRP | S_IXOTH
- 读写权限:
0666
或S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
- 所有权限:
0777
或S_IRWXU | S_IRWXG | S_IRWXO
chmod
函数可以更改指定路径下的文件或目录的访问权限,权限的改变会影响该文件或目录的用户、用户组、其他用户的访问权限。
需要注意的是,chmod
函数只能更改由调用进程拥有的文件或目录的权限,也就是说,如果当前进程没有该文件的所有权,则无法更改该文件的权限。
实例: 修改文件的权限
chmod.c
#include <sys/stat.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{
int ret = chmod("english.txt", 0775);
if (ret == -1)
{
perror("chmod err");
return -1;
}
return 0;
}