zoukankan      html  css  js  c++  java
  • 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中设置状态位的方法大概都是用宏指定;删除状态位语法为原来的状态位 &~ 宏;增加状态位语法为原来的状态位 | 宏。

  • 相关阅读:
    Ubuntu 安装vsftp软件(已测试)
    linux 防火墙打开端口/屏蔽IP等
    PhpStorm+PhpStudy+xdebug 配置图解
    MongoDB 学习笔记(五)索引
    linux vi 编辑器命令
    mongodb添加用户和认证
    Linux下Nodejs安装(完整详细)
    键盘数字与字母对应的快捷键
    Webservce、WCF、WebApi的区别
    MongoDB 学习笔记(四)C# 操作MongoDB
  • 原文地址:https://www.cnblogs.com/scut-fm/p/3653122.html
Copyright © 2011-2022 走看看