Linux学习 day07之高级权限

一 文件权限管理四:ACL

简介

用命令setfacl设置的ACL(Access Control List) 权限是UGO权限的扩展,ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。

ps:UGO中的O即其他人,涵盖了非常大的范围,我们使用setfacl可以将用户对文件的权限进行进一步细化,

基本操作

文件一旦设置了acl权限后,查看信息会出现一个加号,以后包括UGO在内的权限都可以用setfacl来设置

修改属主的权限
setfacl -m u::权限 a.txt

修改属组的权限
setfacl -m g::权限 a.txt

修改其他人的权限
setfacl -m o::权限 a.txt

修改具体某一个用户的权限
setfacl -m u:用户名:权限 a.txt

修改具体某一个组的权限
setfacl -m g:组名:权限 a.txt # 组必须存在

  • 也可以给目录设置,都一样

查看与删除

# 查看
getfacl /opt/a.txt

# 删除
setfacl -x g:group1 /opt/a.txt # 删除组hr的权限
setfacl -b /opt/a.txt #删除所有acl权限

应用

应用:当前用户如果检索不到对应的acl权限或者检索到后发现权限为空,都会对应到other权限上


应用场景1: 其他人对文件没有任何权限,然后单独设置其他人里的egon01对文件有r权限、egon02对文件有w权限

setfacl -b b.txt # 可以先清理掉所有的acl权限,保证实验环境干净
setfacl -m o::- b.txt
setfacl -m u:egon01:r b.txt
setfacl -m u:egon02:w b.txt
# egon01 对 b.txt的权限为r
# egon02 对 b.txt的权限为w
# 剩余的其他人中:
# 例如egon03 对 b.txt的权限为-

应用场景2:其他人对文件有rw权限,然后单独设置其他人里的egon01对文件有r权限、egon02对文件有w权限

setfacl -b b.txt # 可以先清理掉所有的acl权限,保证实验环境干净
setfacl -m o::rw b.txt
setfacl -m u:egon01:r b.txt
setfacl -m u:egon02:w b.txt
# egon01 对 b.txt的权限为r
# egon02 对 b.txt的权限为w
# 剩余的其他人中:
# 例如egon03 对 b.txt的权限为rw

应用示例

[root @ web01 ~] # pwd
/ root

[root @ web01 ~] # echo 1111 > b.txt
[root @ web01 ~] # getfacl b.txt
# file: b.txt
# owner: root
# group: root
user::rw -
group::r - -
other::r - -

[root @ web01 ~] # setfacl -m o::- b.txt
[root @ web01 ~] # setfacl -m u:egon01:r b.txt
[root @ web01 ~] # setfacl -m u:egon02:w b.txt
[root @ web01 ~] # getfacl b.txt
# file: b.txt
# owner: root
# group: root
user::rw -
user: egon01:r - -
user: egon02:-w -
group::r - -
mask::rw -
other::---

[root @ web01 ~] # su - egon01 -c "cat /root/b.txt"
1111

[root @ web01 ~] # su - egon01 -c "echo 222 >> /root/b.txt"
-bash: / root / b.txt: 权限不够

[root @ web01 ~] # su - egon02 -c "cat /root/b.txt"
cat: / root / b.txt: 权限不够

[root @ web01 ~] # su - egon02 -c "echo 222 >> /root/b.txt"

ACL高级用法

mask

设置mask命令如下。
setfacl -m m:rw /opt/a.txt**
设置完mask后,除了所有者和other不受影响,其他都会受到mask的影响,mask决定了他们的最高
权限)
mask值就像一个筛子,文件属主和other之外的所有权限都需要被它筛一遍,如果mask值为rw-则代表
该筛子只放行rw权限。本质原理是权限A需要与maskB进行按位与运算,得到的结果才是effective
效权限
在这里插入图片描述
建议:为了方便管理文件权限,其他人的权限置为空:chmod o=- /opt/a.txt

  1. 保证其他人对/opt/a.txt没有权限,然后展开实验
[root@egon ~]# echo 111 > /opt/a.txt
[root@egon ~]# setfacl -m o::- /opt/a.txt
[root@egon ~]# getfacl /opt/a.txt
getfacl: Removing leading '/' from absolute path names
# file: opt/a.txt
# owner: root
# group: root
user::rwgroup::r--
other::---
  1. 添加acl权限
[root@egon opt]# setfacl -m u:egon:rw /opt/a.txt # 其他人egon对a.txt有rw权限
[root@egon opt]# setfacl -m u:lili:r /opt/a.txt # 其他人lili对a.txt有r权限
[root@egon opt]# getfacl /opt/a.txt # 可以看到mask默认值为rwgetfacl: Removing leading '/' from absolute path names
# file: opt/a.txt
# owner: root
# group: root
user::rwuser:lili:r--
user:egon:rwgroup::r--
mask::rwother::---

[root@egon opt]# ll /opt/a.txt
-rw-rw----+ 1 root root 4 10月 29 19:33 /opt/a.txt
  1. 按位与运算
    lili权限:r--
    mask权限:rwlili最终权限: r--
[root@egon opt]# su - lili -c "cat /opt/a.txt"
111
222

[root@egon opt]# su - lili -c "echo 666 >> /opt/a.txt"
-bash: /opt/a.txt: 权限不够

egon权限:rwmask权限:rw最终权限: rw-

[root@egon opt]# su - egon -c "cat /opt/a.txt"
111

[root@egon opt]# su - egon -c "echo 222 >> /opt/a.txt"
  1. 设置mask
[root@egon opt]# setfacl -m m:- /opt/a.txt
[root@egon opt]# getfacl /opt/a.txt
getfacl: Removing leading '/' from absolute path names
# file: opt/a.txt
# owner: root
# group: root
user::rwuser:lili:r-- #effective:---
user:egon:rw- #effective:---
group::r-- #effective:---
mask::---
other::---

[root@egon opt]# su - egon -c "cat /opt/a.txt"
cat: /opt/a.txt: 权限不够

[root@egon opt]# su - lili -c "cat /opt/a.txt"
cat: /opt/a.txt: 权限不够

ps:我们一般不更改 mask 权限,只要赋予 mask最大权限(也就是rwx),则给用户或群组设定的ACL权限本身就是有效的。

default: 继承(默认)

要求: 希望egon能够对/home以及以后在/home下新建的文件有读、写、执行权限
思路:

  1. 步骤一: 赋予egon/home读、写、执行权限
[root@localhost ~]# setfacl -m u :egon: rwx /home
  1. 步骤二: 赋予egon对以后在/home下新建的文件有读、写、执行权限 (使egon的权限继承),注意:是作用到子目录,对当前文件没有相应权限
[root@localhost ~]# setfacl -m d:u :egon: rwx /home
[root@egon opt]# mkdir /test
[root@egon opt]# setfacl -m u:egon:rwx /test
[root@egon opt]# setfacl -m d:u:egon:rwx /test
[root@egon opt]# getfacl /test
getfacl: Removing leading '/' from absolute path names
# file: test
# owner: root
# group: root
user::rwx
user:egon:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:egon:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

[root@egon opt]# mkdir /test/aaa
[root@egon opt]# touch /test/b.txt
[root@egon opt]# getfacl /test/aaa/
getfacl: Removing leading '/' from absolute path names
# file: test/aaa/
# owner: root
# group: root
user::rwx
user:egon:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:egon:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

[root@egon opt]# getfacl /test/b.txt
getfacl: Removing leading '/' from absolute path names
# file: test/b.txt
# owner: root
# group: root
user::rwuser:egon:rwx #effective:rw- # 权限已经继承过来了,但是因为mask的影响,变成
了rwgroup::r-x #effective:r--
mask::rwother::r--

二 文件权限管理五:文件属性(权限)

[root@localhost ~]# touch /opt/{1..3}.txt
[root@localhost ~]# chmod 000 /opt/*
[root@localhost ~]# lsattr /opt/
---------------- /opt/1.txt
---------------- /opt/2.txt
---------------- /opt/3.txt

[root@localhost ~]# chattr +a /opt/1.txt # 允许追加内容
[root@localhost ~]# chattr +i /opt/2.txt # 禁止任何修改,有些病毒程序会对文件加上该权限
[root@localhost ~]# chattr +A /opt/3.txt # 不更改文件访问时间
[root@localhost ~]#
[root@localhost ~]# lsattr /opt/
-----a---------- /opt/1.txt
----i----------- /opt/2.txt
-------A-------- /opt/3.txt


# 验证
[root@localhost ~]# echo 111 >> /opt/1.txt
[root@localhost ~]# cat /opt/1.txt
111
[root@localhost ~]# rm -rf /opt/1.txt
rm: 无法删除"/opt/1.txt": 不允许的操作


# 去掉
[root@localhost ~]# chattr -a /opt/1.txt
[root@localhost ~]# chattr -i /opt/2.txt
[root@localhost ~]# chattr -A /opt/3.txt

实验

[root@localhost ~]# echo 123131231 > e.txt
[root@localhost ~]# chattr +A e.txt
[root@localhost ~]# stat e.txt
文件:"e.txt"
大小:10 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:17154806 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2020-08-11 19:15:15.548257742 +0800
最近更改:2020-08-11 19:15:15.548257742 +0800
最近改动:2020-08-11 19:15:22.494283808 +0800
创建时间:-

[root@localhost ~]# cat e.txt
123131231

[root@localhost ~]# stat e.txt
文件:"e.txt"
大小:10 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:17154806 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2020-08-11 19:15:15.548257742 +0800
最近更改:2020-08-11 19:15:15.548257742 +0800
最近改动:2020-08-11 19:15:22.494283808 +0800
创建时间:-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值