40_Linux下的文件权限管理

st_mode中记录文件的权限位

st_mode本质上是一个32位的数,类型其实就是unsigned int,这个数里的每一个二进制位表示一个含义

我们使用的时候使用专门的掩码取出需要的标志位

ls -l打印详细列表


文件类型和权限列表  注意日期是建档日期

文件操作时的权限规则

讲真,文件访问操作,不仅与文件的属性有关,还与访问者的权限有关,分别判断很繁琐,用一个函数判断有没有访问权限就是access调用

最好养成一个好的习惯,就是操作文件时,最好先看一下有没有访问这个文件的权限

#include <stdio.h>
#include <unistd.h>


#define NAME  "a.txt"
int main(void)
{
	int ret = -1;
	
	ret = access(NAME, F_OK);
	if(ret < 0)
	{
		printf("文件不存在\n");
		return -1;
	}
	else
	{
		printf("文件存在  ");	
	}
	
	ret = access(NAME, R_OK);
	if(ret < 0)
	{
		printf("不可读 ");
		return -1;
	}
	else
	{
		printf("可读 ");	
	}
	
	ret = access(NAME, W_OK);
	if(ret < 0)
	{
		printf("不可写 ");
		return -1;
	}
	else
	{
		printf("可写 ");	
	}
	
	ret = access(NAME, X_OK);
	if(ret < 0)
	{
		printf("不可执行\n");
		return -1;
	}
	else
	{
		printf("可执行\n");	
	}
	return 0;
}


chmod 更改文件权限的命令,只有root用户可以进行操作

chmod的命令其实使用chmod的API实现的

也就是API才是所有的基础


示例代码

#include <stdio.h>
#include <sys/stat.h>


#define NAME  "a.txt"
int main(int argc,char **argv)
{
	int ret = -1;
	
	if(argc != 2)
	{
		printf("usage :%s filename\n", argv[0]);
		return -1;
	}
	
	ret = chmod(argv[1], S_IRUSR | S_IWUSR | S_IWUSR);//只给uer属主所有权限,别人的什么都不给
	if(ret < 0)
	{
		perror("chmod");
		return -1;
	}
	else
	{
		printf("argc :%d \n", argc);
		printf("argv[0] :%s \n", argv[0]);
		printf("argv[1] :%s \n", argv[1]);	
	}
	
	return 0;
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值