七、 权限管理
ACL权限控制访问
1)dumpe2fs -h /dev/sda3 查看分区是否支持ACl
2)mount -o remount,acl 临时设置acl权限
永久设置 /etc/fstab ----> mount -o remount / (设完重挂一次生效)
3)getfacl 参数 查看文件的acl权限
4)setfacl [] 参数 设置ACL权限
-m 增加acl权限
-x 删除授权用户
-b 清空acl权限(mask值)
-R 对目录及其内所有文件都设置权限(递归设置)
setfacl -m u:b1:rwx 1.txt (设置b1用户对1.txt的rwx权限)
setfacl -m m:rwx (设置mask值为rwx权限(最大限制权限,防止acl权限过大))
setfacl -R -m u:b1:rwx 1.txt 递归设置权限
让文件夹内所创建的文件继承文件夹权限
用法一:setfacl -d -m u:zhangsan:r /abc
用法二:setfacl -m d:u:zhangsan:r /abc
当一个文件有ACL权限时,其所属组位置上表现的权限,不再是所属组的权限,而是ACL的mask的权限。
sudo授权
用户必须对 /etc/passwd 文件有 r 权限
授权:将授权的信息记录到配置文件中
visudo 专门用来修改授权配置文件的
-r--r----- /etc/sudoers 授权配置文件(被授权者有哪些权限)
root ALL=(ALL) ALL
被授权者 可管理主机=(被授权者所借用的身份) 被授权者可执行的命令
zhangsan ALL=(root) /sbin/shutdown -r now
us1 ALL=(root) /usr/bin/passwd ! /usr/bin/passwd root ! /usr/bin/passwd ""
验证授权是否成功(普通用户身份):
登录zhangsan
# sudo shutdown -r now
执行命令,会有以下3个过程
1. 查看/etc/sudoers配置文件,是否有对zhangsan的授权
2. 还需要验证普通用户的身份(要求普通用户输入密码)
3. 若有授权、普通用户身份验证成功:执行授权命令(借root身份)
注意:
1. 授权时,不得仅授权某一命令,要授权具体的(命令 -选项 操作对象)
2. 授权时,仅授权普通用户所需要的权限,不要额外授权(用取反缩小授权范围)
passwd 命令在执行时,会检查命令的执行者UID
1. 若UID是0,则passwd命令后可以跟任何字符串
2. 若UID不为0,则passwd命令后不可以跟任何字符串
给组授权:
%zhangsan ALL=(ALL) ALL
授权别名:(简化授权记录、缩短授权记录的长度)
给好几个命令设置一个别名NETWORKING
Cmnd_Alias NETWORKING = /usr/bin/passwd ! /usr/bin/passwd root ! /usr/bin/passwd ""
zhangsan ALL=(root) NETWORKING
文件的特殊权限
SUID(SetUID)
定义:在命令的所有者位置具有s权限的,叫做具有SUID权限
功能:
⑴ 一个普通用户在执行具有SUID权限的命令时,该命令的执行者会临时变更为命令的所有者
注意:
1. 普通用户需要对所执行的命令有x权限
2. SUID只设置在可执行文件(命令)和脚本上
如:密码修改的过程:用户使用passwd命令,修改位于/etc/shadow中的字符串
-rwsr-xr-x root root /usr/bin/passwd
---------- root root /etc/shadow
EUID:应用程序执行时所持有的用户身份
root /usr/bin/passwd /etc/shadow
zhangsan /usr/bin/passwd /etc/shadow
SGID(SetGID)
定义:在命令的所属组位置具有s权限的,叫做具有SGID权限
功能
⑴ 针对目录
一个普通用户在一个具有SGID权限的目录下创建文件时,该用户的有效组临时变更为了该目录的所属组。
针对目录的SGID:
# mkdir /test
# chmod o+w /test
# useradd zhangsan + lisi
$ cd /test
$ touch a.txt
# chmod g+s /test
$ cd /test
$ touch b.txt
对比a.txt 和 b.txt 文件的归属,得到结果。
⑵ 针对可执行文件:
一个普通用户在执行具有SGID权限的命令时,则会临时加入命令文件的所属组内,以组成员的身份执行操作
如:一个普通用户在执行具有SGID权限的命令时,该用户会临时加入到slocate组内,以组成员的身份查看mlocate.db文件
-rwx--s--x root slocate /usr/bin/locate
-rw-r----- root slocate /var/lib/mlocate/mlocate.db
root /usr/bin/locate /var/lib/mlocate/mlocate.db
zhangsan /usr/bin/locate /var/lib/mlocate/mlocate.db
SBIT(STICKY BIT)
黏着位:在具有SBIT权限的目录下,普通用户只能删除自己创建的文件(root除外),如/tmp目录
文件系统属性
chattr [+-] [选项] 文件或目录
i:对文件,不允许对文件进行任何操作;
对目录,只能修改目录下文件的数据,不可新建、删除,改名。
a:对文件,只能在文件中增加数据,但是不能删除也不能修改数据;
对目录,只能在目录中新建和修改文件,不允许删除、改名。
e:Linux 中绝大多数的文件都默认拥有 e 属性。表示该文件是使用 ext 文件系统进行存储的,
且不能使用"chattr -e"命令取消 e 属性
lsattr 选项 文件名
-a 显示所有文件和目录(显示隐藏文件)
-d 若目标是目录,仅列出目录本身属性
SUID&SGID 和 sudo授权的对比:
SUID&SGID : 针对的对象是所有能够使用他们的用户
sudo授权:授权更具体,更严谨
如何设置特殊权限:
chmod ugo +- s file
chmod 4755 file suid(可执行文件)
chmod 2755 file sgid(可执行文件&目录)
chmod 1755 file sbit(目录)
umask 0022 0002
第一个位置的 0 代表该数值是一个八进制的数值
SUID : 4755
取消 : 00755
权限管理章节的重点:
1. ACL & sudo
2. chattr & lsattr
3. s系列(SUID&SGID&SBIT) 了解