文件访问控制列表facl
2017-05-30 10:56
99 查看
[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转换为字符串,成功返回字符串长度
有时间我再添加实际例子(毕竟我现在也没怎么搞懂这个)
相关文章推荐
- Linux入门之facl文件访问控制列表
- facl:文件访问控制列表
- FACL 文件系统的权限设置
- 文件控制列表命令setfacl和getfacl的使用
- Linux ACL权限控制:getfacl、setfacl
- 特殊权限位及文件访问控制列表
- linux下例行任务(crontab,at)及facl学习
- 【setfacl】设定额外的访问控制列表【getfacl】获取文件的facl
- 文件特殊权限及facl
- 设置文件facl和chattr权限验证 facl
- linux-facl,whoami,who,w,last,lastlog,basename,mail,hostname,$random,case语句
- Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)
- Linux 文件隐藏权限 文件访问控制列表(ACL)
- Linux中的文件访问控制列表ACL
- Setfacl 设置文件访问控制列表
- FACL
- 额外权限FACL的用法
- 特殊权限控制之SUID、SGID、Sticky及facl
- FACL额外访问控制权限
- linux笔记-facl及用户及Linux终端