文件访问控制列表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系统管理中最重 ...
随机推荐
- vue-1-模板语法
文本 <span>Message: {{ msg }}</span><span v-once>这个将不会改变: {{ msg }}</span> 原始 ...
- Android : 输入设备键值从底层到应用层的映射流程
一.Android输入子系统简介: Android输入事件的源头是位于/dev/input/下的设备节点,而输入系统的终点是由WMS管理的某个窗口.最初的输入事件为内核生成的原始事件,而最终交付给窗口 ...
- Convert the AScii to SAC file
readtable *.txt w sac filename.sac ch delta dela0 w over
- 中文datepicker控件
$(function() { $.datepicker.regional[, isRTL: !, showMonthAfterYear: !, yearSuffix: "年" } ...
- Ajax 以及 前端JSP页面如何查看数值
$.ajax({ url: ctx + "/unit/rsdl/qyjy/getDljgCode", type: "post", success: functi ...
- XGboost学习总结
XGboost,全称Extrem Gradient boost,极度梯度提升,是陈天奇大牛在GBDT等传统Boosting算法的基础上重新优化形成的,是Kaggle竞赛的必杀神器. XGboost属于 ...
- JavaScript , js 上下文(this 的指代)
上下文 代表 this 变量的值, 以及 它的 指代; 它决定一个函数怎么被调用; 当一个函数作为一个对象的方法被调用的时候, this总是指向 调用这个方法的对象. ----- 1 ,情况一: 字面 ...
- winform 异性窗体的实现
效果图 首先需要在vs里添加控件 AlphaForm.dll 添加完了有这来两个控件 1.把第二个控件拖入窗体里把窗体铺满 2.找一张至少有一个闭合图形的透明图片 设置为AlphaFormTrans ...
- anaconda jupyter notebook修改默认文件路径
使用anaconda附带的jupyter,想要改变默认运行文件路径,直接在cmd中输入jupyter notebook会提示:jupyter不是内部命令! 可能是anaconda代理了他所安装的软件, ...
- Vue 之 Vue.nextTick()
异步更新队列 可能你还没有注意到,Vue 异步执行 DOM 更新.只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变.如果同一个 watcher 被多次触发,只会一次 ...