用于更改文件或目录的权限。
1.头文件
#include <sys/stat.h>
2.函数原型
int chmod(const char *pathname, mode_t mode);
3.参数
pathname:指向要检查的路径名的指针。
mode:一个表示新权限的模式值,通常是一个整数,它使用位掩码的形式来表示。
这里的mode值可以参考文件权限章节开头的表格。这里需要说明的是这些权限可以使用位运算符组合起来。如:
mode_t mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP
4.返回值
成功返回0,错误返回-1。
5.示例:(使用chmod函数更改文件权限)
| #include <stdio.h>
#include <sys/stat.h> #include <stdlib.h> void permissions_printf(const char *path) { struct stat file_info; if (lstat(path, &file_info) < 0) { exit(EXIT_FAILURE); } printf("File: %sn", path); printf("Permissions: "); printf((S_ISDIR(file_info.st_mode)) ? "d" : "-"); printf((file_info.st_mode & S_IRUSR) ? "r" : "-"); printf((file_info.st_mode & S_IWUSR) ? "w" : "-"); printf((file_info.st_mode & S_IXUSR) ? "x" : "-"); printf((file_info.st_mode & S_IRGRP) ? "r" : "-"); printf((file_info.st_mode & S_IWGRP) ? "w" : "-"); printf((file_info.st_mode & S_IXGRP) ? "x" : "-"); printf((file_info.st_mode & S_IROTH) ? "r" : "-"); printf((file_info.st_mode & S_IWOTH) ? "w" : "-"); printf((file_info.st_mode & S_IXOTH) ? "x" : "-"); printf("n"); } int main(){ const char *file = "chmod_file.txt"; mode_t mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWOTH; printf("Source Permissionsn"); permissions_printf(file); chmod(file, mode); printf("nChange Permission:n"); permissions_printf(file); } |
6.测试结果
| Source Permissions
File: chmod_file.txt Permissions: -rw-r--r-- Change Permission: File: chmod_file.txt Permissions: -rwxr---w- |
可以看到修改的文件名称为chmod_file.txt,原权限为文件拥有者有读写权限,同组用户有读权限,其他用户也是读权限。修改后变为文件拥有者有读写执行权限,同组用户支持读权限,其他用户支持写权限。
218