ACL权限
1.ACL的开启
- df -h 查看分区
- dumpe2fs 查询分区acl权限是否开启
语法:dumoe2fs -h /dev/sd5
选项:
-h:仅显示超级块中信息,而不显示磁盘块组的详细信息
/dev/sd5 代表 文件所在的磁盘分区
- 临时开启分区acl权限
mount -o remount,acl / 重新挂载根分区,并挂载加入acl权限
- 永久开启分区acl权限
1.vi /etc/fstab
修改UUID=一串密文 / ext4 defaults,acl 1 1 加入acl
2.mount -o remount /
重新挂在文件系统或者重新启动系统,使修改生效
2.查看与设定ACL权限
- 查看ACL命令
语法:getfacle 文件名 查看acl权限
- 设定ACL权限
setfacl [选项] 文件名
选项:
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
例:
useradd zhangsan 添加用户zhangsan
useradd lisi 添加用户李四
useradd test 添加用户test
groupadd tgroup 添加用户组
mkdir /project 创建目录
chown root:tgroup /project/ 更改project目录的所属者和所属组
chmod 770 /project/ 更改project目录的权限为 rwxrwx---
setfacl -m u:test:rx /project/ 给用户test赋予r-x权限,使用"u:用户名:权限"格式,给用户组赋予权限格式"g:用户名:权限"
3.最大有效权限与删除ACL权限
- 最大有效权限mask
定义:mask是来指定最大有效权限的,如果我给用户赋予了acl权限是需要与mask权限“相与”才能得到用户的真正权限。
修改最大有效权限
setfacl -m m:rx 文件名 设定mask权限为r-x,使用'm:权限'格式
- 删除ACL权限
语法:setfacl -x u:用户名 文件名 删除指定用户的ACL权限
setfacl -x g:组名 文件名 删除指定用户组的ACL权限
setfacl -b 文件名 会删除文件的所有的ACL权限
4.默认ACL权限和递归ACL权限
- 递归ACL权限
定义:递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
语法:setfacl -m u:用户名:权限 -R 目录名
- 默认ACL权限
定义:默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
语法:setfacl -m d:u:用户名:权限 -R 目录名
文件系统属性chattr权限
- chattr
语法:chattr [+-=] [选项] 文件或目录名
+:增加权限
-:删除权限
=:等于某权限
选项:
-i : 如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
-a : 如果对文件设置i属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。
- 查看文件系统属性
语法:lsattr 选项 文件名
选项:
-a:显示所有文件和目录
-d:若目标是目录,仅列出目录本身的属性,而不是子文件的
系统命令sudo权限
- sudo权限
1.root把本来只能超级用户执行的命令赋予普通用户执行
2.sudo的操作对象是系统命令 - sudo使用
visudo 实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
用户名 被管理主机的地址 = 可以使用的身份 授权命令(绝对路径)
例:test ALL = /sbin/shutdown -r now
%wheel ALL=(ALL) ALL
%组名 被管理主机的地址 = 可以使用的身份 授权命令(绝对路径)
普通用户执行sudo赋予的命令
su - test
sudo -l 查看可用的sudo命令
sudo /sbin/shutdown -r now 普通用户执行sudo赋予的命令