运维开发网

Linux基础篇(13)小白如何学习Linux?权限管理之高级权限

运维开发网 https://www.qedev.com 2021-04-13 23:06 出处:51CTO 作者:孙新杰博客
前言小文章《早起一小时你就赢了》  有位前辈跟我算过一笔账:如果每天早起一小时一个月就比别人多了30个小时。这30个小时你可以看完几本书可以在一门新技能上初入门槛人与人的差距就是这样逐渐拉开的。  这笔账算得我热血沸腾二话不说当即着手去实施。  可是这激情来得快褪去得也快每天早上被闹钟吵醒的电光石火之间就为自己找了无数的理由和借口开脱睡眠不足影响一天的效率学习不差这一会儿先再补个觉明天一定把今天欠

前言小文章

《早起一小时 你就赢了》

  有位前辈跟我算过一笔账:如果每天早起一小时 一个月就比别人多了30个小时。这30个小时 你可以看完几本书 可以在一门新技能上初入门槛 人与人的差距就是这样逐渐拉开的。

  这笔账算得我热血沸腾 二话不说 当即着手去实施。

  可是这激情来得快褪去得也快 每天早上被闹钟吵醒的电光石火之间 就为自己找了无数的理由和借口开脱 睡眠不足影响一天的效率 学习不差这一会儿 先再补个觉 明天一定把今天欠下的补回来

  等心满意足地睡过去后 又陷入懊悔自责中:“真是没用 自己的征途是星辰大海 怎么连早起都做不到。”

  有多少人如我一样 无数次地卯足劲儿想要早起 又无数次地折戟沉沙。

  没有目标感 是最大的拦路虎。

  有人可能会问:“一直坚持 但如果坚持五年后还没成功呢?”

  有一个回答让我印象深刻:没事呀 你离你的梦想又缩短了五年。生活中 虽所期不一定能所成 但我们应该明白 每向前挪一步都足以让我们满心欢喜。

  人生就是一座山峰 我们都渴望立于山巅一览众山小 但有人年少成名 有人大器晚成 每个人都有自己的人生节奏。

一 文件权限管理四: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: 其他人对文件没有任何权限,然后单独设置其他人里的fly01对文件有r权限、fly02对文件有w权限

setfacl -b b.txt # 可以先清理掉所有的acl权限,保证实验环境干净

setfacl -m o::- b.txt

setfacl -m u:fly01:r b.txt

setfacl -m u:fly02:w b.txt

fly01 对 b.txt的权限为r

fly02 对 b.txt的权限为w

剩余的其他人中:

例如fly03 对 b.txt的权限为-


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

setfacl -b b.txt # 可以先清理掉所有的acl权限,保证实验环境干净

setfacl -m o::rw b.txt

setfacl -m u:fly01:r b.txt

setfacl -m u:fly02:w b.txt

fly01 对 b.txt的权限为r

fly02 对 b.txt的权限为w

剩余的其他人中:

例如fly03 对 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:fly01:r b.txt

[root @ web01 ~] # setfacl -m u:fly02:w b.txt

[root @ web01 ~] # getfacl b.txt

#file: b.txt

#owner: root

#group: root

user::rw -

user: fly01:r - -

user: fly02:-w -

group::r - -

mask::rw -

other::---

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

1111

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

-bash: / root / b.txt: 权限不够

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

cat: / root / b.txt: 权限不够

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

[root @ web01 ~] #

==============>ACL高级用法<==============

1.mask

设置mask命令如下。

setfacl -m m:rw /opt/a.txt

设置完mask后,除了所有者和other不受影响,其他都会受到mask的影响,mask决定了他们的最高权限)

mask值就像一个筛子,文件属主和other之外的所有权限都需要被它筛一遍,如果mask值为rw-则代表该筛子只放行rw权限。本质原理是权限A需要与mask值B进行按位与运算,得到的结果才是effective有效权限

Linux基础篇(13)小白如何学习Linux?权限管理之高级权限

建议:为了方便管理文件权限,其他人的权限置为空:chmod o=- /opt/a.txt

1、保证其他人对/opt/a.txt没有权限,然后展开实验

[root@fly ~]# echo 111 > /opt/a.txt

[root@fly ~]# setfacl -m o::- /opt/a.txt

[root@fly ~]# getfacl /opt/a.txt

getfacl: Removing leading '/' from absolute path names

#file: opt/a.txt

#owner: root

#group: root

user::rw-

group::r--

other::---

[root@fly ~]#

2、添加acl权限

[root@fly opt]# setfacl -m u:fly:rw /opt/a.txt # 其他人fly对a.txt有rw权限

[root@fly opt]# setfacl -m u:lili:r /opt/a.txt # 其他人lili对a.txt有r权限

[root@fly opt]# getfacl /opt/a.txt # 可以看到mask默认值为rw-

getfacl: Removing leading '/' from absolute path names

#file: opt/a.txt

#owner: root

#group: root

user::rw-

user:lili:r--

user:fly:rw-

group::r--

mask::rw-

other::---

[root@fly opt]# ll /opt/a.txt

-rw-rw----+ 1 root root 4 10月 29 19:33 /opt/a.txt

[root@fly opt]#

3、按位与运算

lili权限:r--

mask权限:rw-

lili最终权限: r--

[root@fly opt]# su - lili -c "cat /opt/a.txt"

111

222

[root@fly opt]# su - lili -c "echo 666 >> /opt/a.txt"

-bash: /opt/a.txt: 权限不够

[root@fly opt]#

fly权限:rw-

mask权限:rw-

最终权限: rw-

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

111

[root@fly opt]# su - fly -c "echo 222 >> /opt/a.txt"

[root@fly opt]#

4、设置mask

[root@fly opt]# setfacl -m m:- /opt/a.txt

[root@fly opt]# getfacl /opt/a.txt

getfacl: Removing leading '/' from absolute path names

#file: opt/a.txt

#owner: root

#group: root

user::rw-

user:lili:r-- #effective:---

user:fly:rw- #effective:---

group::r-- #effective:---

mask::---

other::---

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

cat: /opt/a.txt: 权限不够

[root@fly opt]# su - lili -c "cat /opt/a.txt"

cat: /opt/a.txt: 权限不够

[root@fly opt]#

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

2、default: 继承(默认)

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

思路:

步骤一: 赋予fly对/home读、写、执行权限

[root@localhost ~]# setfacl -m u:fly:rwx /home

步骤二: 赋予fly对以后在/home下新建的文件有读、写、执行权限 (使fly的权限继承),注意:是作用到子目录,对当前文件没有相应权限

[root@localhost ~]# setfacl -m d:u:fly:rwx /home

[root@fly opt]# mkdir /test

[root@fly opt]# setfacl -m u:fly:rwx /test

[root@fly opt]# setfacl -m d:u:fly:rwx /test

[root@fly opt]# getfacl /test

getfacl: Removing leading '/' from absolute path names

#file: test

#owner: root

#group: root

user::rwx

user:fly:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:fly:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

[root@fly opt]# mkdir /test/aaa

[root@fly opt]# touch /test/b.txt

[root@fly opt]# getfacl /test/aaa/

getfacl: Removing leading '/' from absolute path names

#file: test/aaa/

#owner: root

#group: root

user::rwx

user:fly:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:fly:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

[root@fly opt]# getfacl /test/b.txt

getfacl: Removing leading '/' from absolute path names

#file: test/b.txt

#owner: root

#group: root

user::rw-

user:fly:rwx #effective:rw- # 权限已经继承过来了,但是因为mask的影响,变成了rw-

group::r-x #effective:r--

mask::rw-

other::r--

[root@fly opt]#

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

[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 ~]#

[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

精彩评论

暂无评论...
验证码 换一张
取 消