Linux 中权限控制实例

前言

  前文对 Linux 中的权限进行了较为透彻的分析。而本文,则在前文的基础上,具体说明如何在代码中进行权限控制

  下面的代码涉及到以下几个方面:

  1. 创建文件时设置文件权限

  2. 修改文件的默认权限

  3. 修改已创建文件的权限

  在阅读具体实现代码前,请先大致了解如下权限宏。

Linux 中的权限宏

代码实现

 1 #include "apue.h"
 2 #include <fcntl.h>
 3 
 4 #define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
 5 
 6 int
 7 main(void)
 8 {
 9     struct stat statbuf;
10     umask(0);
11 
12     // 按照宏 RWRWRW 指定的权限创建文件 
13     if (creat("foo", RWRWRW) < 0)
14         err_sys("creat error for foo");
15     // 修改默认权限 - 屏蔽掉创建文件的组读写和其他用户读写权限
16     umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
17     if (creat("bar", RWRWRW) < 0)
18         err_sys("creat error for bar");
19     
20     // 获取文件权限信息
21     if (stat("foo", &statbuf) < 0)
22         err_sys("stat err for foo");
23     // 在文件原来的权限信息的基础上,进行增加/删除权限。
24     // 下面的示例删除了组执行权限并增加了设置组ID位。
25     if (chmod("foo", (statbuf.st_mode & ~S_IWGRP) | S_ISGID) < 0)
26         err_sys("chmod err for foo");
27     exit(0);
28 }

运行测试

  运行程序后,查看 foo 文件的权限,与预计相符:

  

小结

  Linux中设置状态位的方法大概都是用宏指定;删除状态位语法为原来的状态位 &~ 宏;增加状态位语法为原来的状态位 | 宏。

 

转载于:https://www.cnblogs.com/scut-fm/p/3653122.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值