facl文件访问控制

Linux文件ACL访问控制策略

facl 针对某个用户单独设置权限,权限设置精度更高


ls查看文件

查看文件权限会多出+号,意思是有facl权限

在这里插入图片描述


getfacl查看文件facl权限

用getfacl查看文件发现user1有了r权限
在这里插入图片描述


设置facl权限


为用户添加facl权限

#-m是赋予权限,u:是给用户赋予权限,r是只读权限
setfacl -m u:user1:r afile  

# 给用户zhangsan添加rwx权限
setfacl -m u:zhangsan:rwx file

在这里插入图片描述
在这里插入图片描述


为用户组添加权限

查看文件权限会多出+号,意思是有facl权限
权限收回是 -x参数

# 给用户组dev添加只读权限
setfacl -m g:dev:r-- file

# 赋予group1组只读权限
## -m是赋予权限,g:是给用户组赋予权限,r是只读权限
setfacl -m g:group1:r afile  

在这里插入图片描述


删除facl权限

# 删除指定用户的权限
setfacl -x u:zhangsan file

# 删除指定用户组的权限
setfacl -x g:dev file

清空facl权限

# 清空文件的facl权限
setfacl -b file

查看facl权限

# 查看文件的facl权限
getfacl afile

在这里插入图片描述


facl权限匹配规则

facl权限是从上到下匹配的,一旦匹配到就停止匹配

# 创建用户zhangsan
useradd zhangsan
# 给文件设置用户zhangsan的权限为---
setfacl -m u:zhangsan:--- file

# 给文件设置用户组zhangsan的权限为rw-
setfacl -m g:zhangsan:rw- file

# 查看facl权限
[zhangsan@localhost ~]$ getfacl file
# file: file
# owner: zhangsan
# group: zhangsan
user::rw-
user:zhangsan:---
group::rw-
group:zhangsan:rw-
mask::rw-
other::r--


# 使用zhangsan用户cat file
[zhangsan@localhost ~]$ cat file
cat: file: 权限不够

mask(最大权限)

mask 权限,指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。

# 为/project设置mask(最大权限)为可读可执行(不可写)
[root@localhost ~]# setfacl -m m:rx /project

# 设定mask权限为r-x,使用"m:权限"格式
[root@localhost ~]# getfacl /project
#file:project
#owner:root
#group:tgroup
user::rwx
group::rwx
mask::r-x  <--mask权限变为r-x
other::---

实验

# 先创建一个目录facltest
mkdir facltest
# 将权限设置为000
chmod 000 facltest
# 针对zhangsan用户设置rwx权限
setfacl -Rm u:zhangsan:rwx facltest
# facltest目录会产生rwx权限
## 注意.变成了+
[root@localhost ~]# ls -ld facltest/
d---rwx---+ 2 root root 6 815 18:44 facltest/
## 这时候除了root和zhangsan用户,都无法访问facltest目录了

# 查看facltest目录的facl权限
[root@localhost ~]# getfacl facltest/
# file: facltest/
# owner: root
# group: root
user::---
user:zhangsan:rwx
group::---
mask::rwx
other::---

Linux文件ACL访问控制策略

参考链接: linux-访问控制列表.html

ACL的出现,则是为了扩展Linux的文件权限控制,以实现更为复杂的权限控制需求。其可以针对任意的用户和用户组进行权限分配(只有root用户可以定义ACL),以及默认权限分配。


查看文件是否有ACL策略

## 如果左侧的权限栏中有 + 号,就是ACL权限
[root@localhost ~]# ll new.sh
-rwxrwxr-x+ 1 root root 1500 814 18:18 new.sh

设置ACL策略(setacl)


修改或设置ACL策略setfacl -m

# 修改或设置ACL策略
setfacl -m	

给指定用户单独加ACL策略setfacl -m u:

setfacl -m u:user1:rwx new.sh


<br/>

给指定组单独加ACL策略setfacl -m g:

setfacl -m g:user1:rwx new.sh

mask:定义除其他人和所有者外的最大权限setfacl -m m::

除其他人和所有者外—指的就是用户组
mask权限和属组权限冲突时,以mask权限为准

# 设置mask权限
[root@localhost ~]# setfacl -m m::r new.sh

# 查看new.sh的acl策略
## 虽然group依然鱻是的r-x,但实际上只有r权限了
[root@localhost ~]# getfacl new.sh
# file: new.sh
# owner: root
# group: root
user::rwx
group::r-x                      #effective:r--
mask::r--						
other::r-x

递归授权-R

-R 递归授权,对目录下已存在的目录或文件设置acl策略,但新的文件不设置ACL策略

## setfacl -Rm u:用户名:权限 目录名
setfacl -Rm u:user1:rwx dir1

## 进入dir
cd dir1

## 查看文件权限
[root@localhost dir1]# ls -la
总用量 4
drwxrwxr-x+ 2 root root  137 95 22:05 .
dr-xr-x---. 9 root root 4096 95 22:04 ..
-rw-rwxr--+ 1 root root    0 95 22:05 test1
-rw-rwxr--+ 1 root root    0 95 22:05 test10

## 查看目录下文件的ACL策略
[root@localhost dir1]# getfacl *
# file: test1
# owner: root
# group: root
user::rw-
user:user1:rwx
group::r--
mask::rwx
other::r--

# file: test10
# owner: root
# group: root
user::rw-
user:user1:rwx
group::r--
mask::rwx
other::r--

删除ACL策略setacl -x

setacl -x


删除指定用户的ACL策略setfacl -x u:
# 删除user1在new.sh文件中的ACL策略
setfacl -x u:user1 new.sh

## 查看该文件删除策略后的ACL策略
[root@localhost ~]# getfacl new.sh
# file: new.sh
# owner: root
# group: root
user::rwx
group::r-x
group:user1:rwx
mask::rwx
other::r-x

删除指定组的ACL策略setfacl -x g:
# 删除user1组在new.sh文件中的ACL策略
setfacl -x g:user1 new.sh

## 查看该文件删除策略后的ACL策略
[root@localhost ~]# getfacl new.sh
# file: new.sh
# owner: root
# group: root
user::rwx
group::r-x
mask::r-x
other::r-x

删除mask的ACL策略setfacl -x m:
# 删除mask的ACL策略
setfacl -x m: new.sh

## 查看该文件删除策略后的ACL策略
[root@localhost ~]# getfacl new.sh
# file: new.sh
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

删除文件所有ACL策略setfacl -b

# 删除文件的所有ACL策略
setfacl -b new.sh

## 查看该文件删除策略后的ACL策略
[root@localhost ~]# getfacl new.sh
# file: new.sh
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

默认ACL策略setacl -d

-d 只针对目录,该目录下新建的目录和文件都会继承ACL策略,老的文件不会改变现有的ACL策略,与-R递归授权正好相反。

# 创建一个新目录dir2
[root@localhost ~]# mkdir dir2
[root@localhost ~]# cd dir2

# 在新目录中创建一个老文件test1
[root@localhost dir2]# touch test1
[root@localhost dir2]# cd ..
# 为dir2目录设置默认ACL策略
[root@localhost ~]# setfacl -dm u:user1:rwx dir2

# 设置ACL策略后再创建一个新文件
[root@localhost ~]# touch dir2/test2

# 对比查看新文件和老文件的ACL策略
## 只有新文件有ACL策略,老文件没有
[root@localhost ~]# getfacl dir2/*
# file: dir2/test1
# owner: root
# group: root
user::rw-
group::r--
other::r--

# file: dir2/test2
# owner: root
# group: root
user::rw-
user:user1:rwx                  #effective:rw-
group::r-x                      #effective:r--
mask::rw-
other::r--

查看文件的ACL策略getfacl

[root@localhost ~]# getfacl new.sh
# file: new.sh
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
group:user1:rwx
mask::rwx	# mask是除了拥有者及其他人(other)以外的人拥有的权限
other::r-x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值