文件的访问权限修改
在介绍如何实现文件权限修改之前,先来说一下在linux下如何查看文件属性以及如何修改文件访问权限吧。
查看文件属性
1. 查看某个目录下**所有**文件属性 在shell下通过命令**ls -l** 即可查看 2.查看一个**具体**文件的属性 在shell下通过命令**ls -l filename**即可实现
修改文件访问权限
在shell下通过命令chmod来实现
例:修改文件test.c的权限为777
chmod 777 test.c
注意
权限修改下成功返回0,失败返回-1
实现命令chmod
/*************************************************************************
> File Name: my_chmod.c
> Author: dongmengyuan
> Mail: 1322762504@qq.com
> Created Time: 2016年07月21日 星期四 08时33分23秒
************************************************************************/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
int main(int argc,char ** argv)
{
int mode; //权限
int mode_u; //所有者的权限
int mode_g; //所属组的权限
int mode_o; //其他用户的权限
char *filename; //存放要修改的文件
if (argc < 3) { //参数默认为3个
printf("%s <mode num> <target file>", argv[0]);
exit(0);
}
/*获取命令行参数*/
//atoi()函数将字符串转换成整形数
mode = atoi(argv[1]);
if (mode > 777 || mode < 0) {
printf("mode error\n");
exit(0);
}
mode_u = mode / 100;
mode_g = ( mode - mode_u * 100 ) /10;
mode_o = mode - mode_u * 100 - mode_g *10;
//转换成八进制表示
mode = (mode_u * 8 * 8) + (mode_g * 8) + mode_o;
filename = argv[2];
//权限修改失败返回-1
if ( chmod (filename,mode) == -1 ) {
perror("chmod fail");
exit(1);
}
return 0;
}
//argv[0]:指向程序的全路径
//argv[1]:指向命令行中执行程序名后的第一个字符串
//argv[2]:指向第二个字符串