文件访问控制列表facl
[root@bogon code]# getfacl a.c //获取文件a.c的文件访问控制列表
# file: a.c
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@bogon code]# getfacl --omit-header a.c //忽略前面文件名,属主,属组
user::rw-
group::r--
other::r--
[root@bogon code]# setfacl -m u:bp:wr,g:bp:wr a.c //设置文件访问控制列表,-m修改,bp用户名,用户组,如果增加-R选项会对目录树递归修改facl
[root@bogon code]# getfacl a.c
# file: a.c
# owner: root
# group: root
user::rw-
user:bp:rw-
group::r--
group:bp:rw-
mask::rw-
other::r--
[root@bogon code]# getfacl --omit-header a.c
user::rw-
user:bp:rw-
group::r--
group:bp:rw-
mask::rw-
other::r--
[root@bogon code]# ls -l a.c //a.c权限后面会多一个加号
-rw-rw-r--+ 1 root root 326 May 29 02:48 a.c
[root@bogon code]# setfacl -x u:bp,g:bp a.c //-x删除记录
[root@bogon code]# getfacl a.c
# file: a.c
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
默认acl和文件创建
[root@bogon code]# mkdir bp
[root@bogon code]# setfacl -d -m u::rwx,u:bp:rx,g::rwx,g:bp:wrx,o::- bp //-d目录acl,给文件夹设置facl,则在该文件夹下新建文件和目录,会默认设置该facl
[root@bogon code]# getfacl -d --omit-header bp
user::rwx
user:bp:r-x
group::rwx
group:bp:rwx
mask::rwx
other::---
[root@bogon code]# cd bp
[root@bogon bp]# ls
[root@bogon bp]# echo "linux">a.txt
[root@bogon bp]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rw-
user:bp:r-x #effective:r--
group::rwx #effective:rw-
group:bp:rwx #effective:rw-
mask::rw-
other::---
[root@bogon bp]#
acl相关函数
#include<acl/libacl.h>
#include<sys/acl.h>
//将文件的acl读入内存
acl_t acl;
acl=acl_get_file(pathname,type)//type的值可以为ACL_TYPE_ACCESS或者ACL_TYPE_DEFAULT
//从内存acl中获取记录
acl_entry_t entry;
status=acl_get_entry(acl,entry_id,&entry)//entry_id的值可以为ACL_FIRST_ENTRY或者ACL_NEXT_ENTRY,该函数可用于遍历acl的所有记录
//获取并修改acl记录中的属性
acl_tag_t tag_type;
status=acl_get_tag_type(entry,&tag_type);//获取
status=acl_set_tag_type(entry,tag_type);//设置
tag_type的值可以为ACL_USER_OBJ,ACL_USER,ACL_GROUP_OBJ,ACL_GROUP,ACL_OTHER,ACL_MASK
//获取和修改acl记录中的标记限定符
uid_t *qualp;
qualp=acl_get_qualifier(entry);
status=acl_set_qualifier(entry,qualp);
//获取和修改ace中的权限集合
acl_permset_t permset;
status=acl_get_permset(entry,&permset);
status=acl_set_permset(entry,permset);
int is_set;
is_set=acl_get_perm(permset,perm);//perm可指定为ACL_READ,ACL_WRITE,ACL_EXECUTE
status=acl_add_perm(permset,perm);
status=acl_delete_perm(permset,perm);
status=acl_clear_perms(permset);//删除所有记录
//创建和删除ace
acl_entry_t entry;
status=acl_create_entry(&acl,&entry);
status=acl_delete_entry(acl,entry);
//更新文件acl,将驻留在内存中acl内容来更新磁盘上的acl
int status;
status=acl_set_file(pathname,type,acl);
//acl在内存和文本格式之间的转换
acl=acl_from_text(acl_string) 将字符串转换为内存acl
char *str;
ssize_t len;
str=acl_to_text(acl,&len) 将内存acl转换为字符串,成功返回字符串长度
有时间我再添加实际例子(毕竟我现在也没怎么搞懂这个)
文件访问控制列表facl的更多相关文章
- Linux_ACL文件访问控制列表
一.ACL文件访问控制列表 前言 1️⃣:ACL-文件访问控制列表: 2️⃣:ACL可以针对单个用户,单个文件或目录来进行r.w.x的权限设定,特别适用于需要特殊权限的使用情况. 3️⃣:ACL就是可 ...
- setfacl 设置文件访问控制列表
setfacl 设置文件访问控制列表 用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ... 参数: -m, --modify=acl 更改文件的访问控 ...
- Linux之facl----设置文件访问控制列表(详解)
setfacl命令 是用来在命令行里设置ACL(访问控制列表) 选项 -b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留. -k,--remove ...
- Linux FACL(文件访问控制列表)
文件有三种权限 属主权限 属组权限 其他权限 现在有这样一个场景,用户 A 想把文件共享给不是同组内用户 B ,而又不想修改其他权限,这时候 FACL 就起作用了 FACL可以给文件添加一个拓展 ...
- Centos下ACL(访问控制列表)介绍(转)
我们知道,在Linux操作系统中,传统的权限管理分是以三种身份(属主.属組以及其它人)搭配三种权限(可读.可写以及可执行),并且搭配三种特殊权限(SUID,SGID,SBIT),来实现对系统的安全保护 ...
- Linux 系统访问控制列表ACL
常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...
- CentOS 7 文件权限之访问控制列表(ACL)
Linux的ACL是文件权限访问的一种手段.当拥有者所属组其他人(own,group,other)不能满足给一个单独的用户设置单独的权限时,ACL的出现就很好的解决了该问题. 比如其他用户own,不属 ...
- 文件权限之facl丶文件属性丶特殊权限
(1)facl:文件的访问控制列表 作用:对象目录或文件可以对不同的用户设定不同的权限 1)getfacl:查看文件或目录的访问控制列表权限 查看 getfacl file/dir acl权限特征:如 ...
- 浅谈访问控制列表(ACL)
1.ACL简介2.前期准备3.ACL的基本操作:添加和修改4.ACL的其他功能:删除和覆盖5.目录的默认ACL6.备份和恢复ACL7.结束语 1.ACL简介 用户权限管理始终是Linux系统管理中最重 ...
随机推荐
- sass 变量的声明 嵌套
sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可. $baseLineHeight: 2; $baseLineHeight: ...
- DevExpress WinForms v18.2新版亮点(五)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v1 ...
- rnn-手写数字识别-网络结构-shape
手写数字识别经典案例,目标是: 1. 掌握tf编写RNN的方法 2. 剖析RNN网络结构 tensorflow编程 #coding:utf-8 import tensorflow as tf from ...
- MFC 关于new出一个新对话框时,退出对话框内存泄漏的问题解决
问题: 在进行点击按钮弹出对话框时,我是用了new来生成一个新的对话框,但是在新对话框关闭的时候,经过检查发现,新对话框存在内存泄漏问题. 原因: 因为使用了new,但是当时没有找到地方进行delet ...
- php 安装过程 第二次探索
由于第一次安装过程写的比较乱,再做整理 1.phpstudy 才是正确姿势. http://phpstudy.php.cn/ 官网下载. phpstrom 中配置 php为 phpstudy目录下 ...
- 什么时候用深搜(dfs)什么时候用广搜(bfs)(转)
1.BFS是用来搜索最短径路的解是比较合适的,比如求最少步数的解,最少交换次数的解,因为BFS搜索过程中遇到的解一定是离根最近的,所以遇到一个解,一定就是最优解,此时搜索算法可以终止.这个时候不适宜使 ...
- undefined is not an object (evaluating '_react2.PropTypes.string')
对所引用的组件原 .import React, {Component,PropTypes} from 'react' 改成:import React, {Component} from 'react' ...
- JavaScript中的函数-7---函数的作用,定义,调用
JavaScript中的函数 函数也是对象,并且是javascript中的一等公民,可以用来创建普通对象.对象只是属性和值的集合 学习目标 1.掌握函数的作用 2.掌握函数的定义 3.掌握函数的调用 ...
- saliency 2015-2016的论文、代码
https://github.com/ArcherFMY/Paper_Reading_List 另外2013年之前的见chengmingming的benchmark主页.
- Xposed MultiDex Hook
使用Xposed Hook多DEX的应用时,Xposed会抛ClassNotFound的异常,原因是它只会在classes.dex查找类.以下官方不完美解决办法,参考 Github上的 #30 iss ...