怎么设置linux权限控制,Linux下如何设置ACL权限?

ACL 是什么

ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

ACL有什么用可以针对用户来设置权限

可以针对用户组来设置权限

子文件/目录继承父目录的权限

检查是否支持ACLACL需要Linux内核和文件系统的配合才能工作

ACL简介

172908065_1_20191011122034453

如上图 的根目录中有一个 /project 目录,这是班级的项目目录。班级中的每个学员都可以访问和修改这个目录,老师也需要对这个目录拥有访问和修改权限,其他班级的学员当然不能访问这个目录。需要怎么规划这个目录的权限呢?应该这样:老师使用 root 用户,作为这个目录的属主,权限为 rwx;班级所有的学员都加入 tgroup 组,使 tgroup 组作为 /project 目录的属组,权限是 rwx;其他人的权限设定为 0。这样这个目录的权限就可以符合我们的项目开发要求了。

一天,班里来了一位试听的学员 st,她必须能够访问 /project 目录,所以必须对这个目录拥有 r 和 x 权限;但是她又没有学习过以前的课程,所以不能赋予她 w 权限,怕她改错了目录中的内容,所以学员 st 的权限就是 r-x。可是如何分配她的身份呢?变为属主?当然不行,要不 root 该放哪里?加入 tgroup 组?也不行,因为 tgroup 组的权限是 rwx,而我们要求学员 st 的权限是 r-x。如果把其他人的权限改为 r-x 呢?这样一来,其他班级的所有学员都可以访问 /project 目录了。

出现这种情况时,普通权限中的三种身份就不够用了。ACL 权限就是为了解决这个问题的。在使用 ACL 权限给用户 st 陚予权限时,st 既不是 /project 目录的属主,也不是属组,仅仅赋予用户 st 针对此目录的 r-x 权限。这有些类似于 Windows 系统中分配权限的方式,单独指定用户并单独分配权限,这样就解决了用户身份不足的问题。

ACL命令

1、setfacl设定文件访问控制列表

格式

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

参数-m, --modify=acl 更改文件的访问控制列表 -M, --modify-file=file 从文件读取访问控制列表条目更改 -x, --remove=acl 根据文件中访问控制列表移除条目 -X, --remove-file=file 从文件读取访问控制列表条目并删除 -b, --remove-all 删除所有扩展访问控制列表条目 -k, --remove-default 移除默认访问控制列表 --set=acl 设定替换当前的文件访问控制列表 --set-file=file 从文件中读取访问控制列表条目设定 --mask 重新计算有效权限掩码 -n, --no-mask 不重新计算有效权限掩码 -d, --default 应用到默认访问控制列表的操作 -R, --recursive 递归操作子目录 -L, --logical 依照系统逻辑,跟随符号链接 -P, --physical 依照自然逻辑,不跟随符号链接 --restore=file 恢复访问控制列表,和“getfacl -R”作用相反 --test 测试模式,并不真正修改访问控制列表属性 -v, --version 显示版本并退出 -h, --help 显示本帮助信息

2、getfacl获取文件访问控制列表

格式

getfacl [-aceEsRLPtpndvh] 文件 ...

参数

-a, --access 仅显示文件访问控制列表 -d, --default 仅显示默认的访问控制列表 -c, --omit-header 不显示注释表头 -e, --all-effective 显示所有的有效权限 -E, --no-effective 显示无效权限 -s, --skip-base 跳过只有基条目(base entries)的文件 -R, --recursive 递归显示子目录 -L, --logical 逻辑遍历(跟随符号链接) -P, --physical 物理遍历(不跟随符号链接) -t, --tabular 使用制表符分隔的输出格式 -n, --numeric 显示数字的用户/组标识 -p, --absolute-names 不去除路径前的 '/' 符号 -v, --version 显示版本并退出 -h, --help 显示本帮助信息

示例1

1、创建文件夹

路径为:/use/java/test/[root@localhost usr]# mkdir java[root@localhost usr]# lsbin etc games include java lib lib64 libexec local mytest sbin share src tmp[root@localhost usr]# cd java/[root@localhost java]# ls[root@localhost java]# mkdir test[root@localhost java]# cd test/[root@localhost test]# touch aa.txt[root@localhost test]# cat aa.txt [root@localhost test]# vi aa.txt [root@localhost test]# cat aa.txt 12323

2、为文件夹/use/java/test/设置acl权限

[root@localhost java]# setfacl -R -m user:usertest1:rwx /usr/java/test/

3、查看文件夹/use/java/test/ 的acl权限[root@localhost java]# getfacl /usr/java/test/

172908065_2_20191011122034625

4、设置测试用户usertest1的默认acl权限

[root@localhost java]# setfacl -R -m default:usertest1:rwx /usr/java/test/

172908065_3_20191011122034750默认 ACL 权限的作用是:如果给父目录设定了默认 ACL 权限,那么父目录中所有新建的子文件都会继承父目录的 ACL 权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值