[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. 7.5 C++基本序列式容器

    参考:http://www.weixueyuan.net/view/6402.html 总结: vector可以理解为可以在两端插入.删除数据的数组,它提供了丰富的成员函数,用于操作数据. begin ...

  2. bootstrap table 列求和

    <div class="modal fade in" id="_modalDialog" tabindex="1" role=&quo ...

  3. Zabbix4.0监控URL

    一:新建群组 1.1:web monitor 二:新建模板 2.1:配置-模板-模板 2.3:创建应用集 配置-模板-web monitor-应用集 2.4:创建web场景 2.5:创建场景步骤: 以 ...

  4. Java实验2

    1.给定一组字符,编程输出里面数值最大者. package experiment; import java.util.Arrays; public class ShenYue { public sta ...

  5. JAVA基本类型和包装类

    JAVA的包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表 ...

  6. mvc Model验证总结及常用正则表达式

    本文属转载,来源: http://www.byywee.com/page/M0/S868/868615.html 关于Model验证官方资料: http://msdn.microsoft.com/zh ...

  7. ylz 开发学习笔记一(注意事项)

    Eclipse快捷键 断点 F6执行下一步 等等 C+S+R 搜索文件名字      C+鼠标移动左击 跳入类文件    jsp 文件的断点是使用 debugger  之后再chrom 用F10单步调 ...

  8. L256 阅读理解

    1主旨题 2细节题 题干关键词 人名,地名,专有名词,时间,和主题相关的核心词汇,带特殊标点的词汇 干扰项 词意猜测

  9. 记一次给nginx的web服务器目录加软链接

    先期情况和问题 已安装好nginx服务器和相关配置.nginx的web目录是/usr/share/nginx/html. 现在的问题是希望把web目录换成/root/nginx/html/,但是不更改 ...

  10. pycharm 永久解封

    第一步   c:\windows\system32\drivers\etc    命令行输入这个 第二步     把host文件复制到桌面 第三步   记事本打开host 第四步    在最下面添加  ...