[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的更多相关文章

  1. Linux_ACL文件访问控制列表

    一.ACL文件访问控制列表 前言 1️⃣:ACL-文件访问控制列表: 2️⃣:ACL可以针对单个用户,单个文件或目录来进行r.w.x的权限设定,特别适用于需要特殊权限的使用情况. 3️⃣:ACL就是可 ...

  2. setfacl 设置文件访问控制列表

    setfacl 设置文件访问控制列表 用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ... 参数: -m, --modify=acl 更改文件的访问控 ...

  3. Linux之facl----设置文件访问控制列表(详解)

    setfacl命令 是用来在命令行里设置ACL(访问控制列表) 选项 -b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留. -k,--remove ...

  4. Linux FACL(文件访问控制列表)

    文件有三种权限 属主权限   属组权限  其他权限 现在有这样一个场景,用户 A 想把文件共享给不是同组内用户 B ,而又不想修改其他权限,这时候 FACL 就起作用了 FACL可以给文件添加一个拓展 ...

  5. Centos下ACL(访问控制列表)介绍(转)

    我们知道,在Linux操作系统中,传统的权限管理分是以三种身份(属主.属組以及其它人)搭配三种权限(可读.可写以及可执行),并且搭配三种特殊权限(SUID,SGID,SBIT),来实现对系统的安全保护 ...

  6. Linux 系统访问控制列表ACL

    常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...

  7. CentOS 7 文件权限之访问控制列表(ACL)

    Linux的ACL是文件权限访问的一种手段.当拥有者所属组其他人(own,group,other)不能满足给一个单独的用户设置单独的权限时,ACL的出现就很好的解决了该问题. 比如其他用户own,不属 ...

  8. 文件权限之facl丶文件属性丶特殊权限

    (1)facl:文件的访问控制列表 作用:对象目录或文件可以对不同的用户设定不同的权限 1)getfacl:查看文件或目录的访问控制列表权限 查看 getfacl file/dir acl权限特征:如 ...

  9. 浅谈访问控制列表(ACL)

    1.ACL简介2.前期准备3.ACL的基本操作:添加和修改4.ACL的其他功能:删除和覆盖5.目录的默认ACL6.备份和恢复ACL7.结束语 1.ACL简介 用户权限管理始终是Linux系统管理中最重 ...

随机推荐

  1. DevExpress ASP.NET Bootstrap Controls v18.2新功能详解(二)

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress ASP.NET Boot ...

  2. Gym - 100971J (思维+简单bfs)

    题目链接:http://codeforces.com/gym/100971/problem/J J. Robots at Warehouse time limit per test 2.0 s mem ...

  3. iframe 常见问题 解析

    1. jquery在iframe子页面获取父页面元素代码如下: $("#objid",parent.document) 2. jquery在父页面获取iframe子页面的元素代码如 ...

  4. <容错性FaultTolerance><Hadoop><Spark>

    Overview 讨论一些常见大数据框架的容错机制 Fault Tolerance in Hadoop MapReduce Heartbeat心跳机制:如果在一定时间内没有收到心跳,则reschedu ...

  5. python3.6 安装第三方库 pyCryptodome 实现AES加密

    起因 前端日子写完的Python入库脚本,通过直接读取配置文件的内容(包含了数据库的ip,数据库的用户名,数据库的密码),因为配置文件中的数据库密码是明文显示的,所以不太安全,由此对其进行加密. 编码 ...

  6. 关于时间戳截取的隐藏bug

    之前写时间戳,要截取后六位 原写法: function timeStamp() { const date = new Date() const month = date.getMonth() + 1 ...

  7. 使用Maven+ssm框架搭建一个web项目

    1,前期准备:Eclipse(Mars.2 Release (4.5.2)).jdk1.7.tomcat7.maven3.2.1 2.使用eclipse中的maven新建一个web项目 点击next: ...

  8. MYSQL锁表问题解决

    本文实例讲述了MYSQL锁表问题的解决方法.分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 ? 1 mysql>show processlist; ...

  9. 线程简述(Thread)

    线程: 进程是一个正在运行的程序,例如电脑上现在在运行的qq,浏览器,电脑管家,这些都是进程 线程就是每一个进程中的一个执行单元,每一个进程至少一个线程,可以有多个线程,例如浏览器上每一个打开的网页都 ...

  10. day12作业答案

    2.1 # lst=['asdgg','as','drtysr'] # lst2=[i.upper() for i in lst if len(i) >3 ] # print(lst2) # 2 ...