ACL权限
ACL权限简介与开启
1 | 1.查看分区ACL权限是否开启 |
查看与设定ACL权限
查看ACL命令
1 | getfacl 文件名 |
设定ACL权限的命令
1 | setfacl 选项 文件名 |
给用户组设定ACL权限
1 | setfacl -m g:组名:权限 文件夹 |
给mask设定权限
1 | setfacl -m m:权限 文件夹 |
最大有效权限与删除ACL权限
最大有效权限mask
- mask是用来指最大有效权限的,如果我给用户赋予了ACL权限,是需要和mask相 “与” 才能得到用户的真正权限
删除ACL权限
1 | setfacl -x u:用户名 文件名 |
默认ACL权限与递归ACL权限
递归权限
- 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
- setfacl -m u:用户名:权限 -R 文件夹名
默认权限
- 默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限
1 | serfacl -m d:u:用户名:权限 文件夹名 |
sudo权限
- root把本来只能超级用户执行超级用户执行的命令赋予普通用户执行
- sudo的操作对象是系统命令
sudo的使用
1 | visudo |
文件特殊权限
SetUID
功能
- 只有可以执行的二进制程序才能设定SUID权限
- 命令执行者要对程序拥有x(执行)权限
- 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
- SetUID权限只在该程序执行的过程中有效,也就是说身份改变只在程序运行中有效
1 | passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码 |
设定SetUID的方法
1 | 4代表SUID |
危险的SetUID
- 关键目录应严格控制写权限,比如:/ ,”/usr”等
- 用户密码设置要严格遵守三原则
- 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限
SetGID
作用
- 只有可以执行的二进制程序才能设定SGID权限
- 命令执行者要对程序拥有x(执行)权限
- 命令执行者在执行该程序时,组身份升级为该程序文件的属组
- SetGID权限只在该程序执行的过程中有效,也就是说组身份改变只在程序执行过程中有效
1 | ll /usr/bin/locate |
- /usr/bin/locate 是可执行的二进制程序,可以赋予SGID
- 执行用户lamp对/usr/bin/locate 命令拥有执行权限
- 执行/usr/bin/locate 命令时候,组身份升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库
- 命令结束,lamp用户的组身份回归为lamp组
SetGID针对目录的作用
- 普通用户必须对此目录拥有r和x权限,才能进入此目录
- 普通用户在此目录中的有效组会变成此目录的数组
- 若普通用户对此目录拥有w权限时,新建的文件的默认数组则是这个目录的属组
设定SetUID的方法
1 | 2代表SUID |
Sticky BIT
SBIT粘着位作用
- 粘着位目前只对目录有效
- 普通用户对于该目录拥有w和x权限,即普通用户可以在此目录有写入权限
- 如果没有粘着位,用为普通用户拥有w权限,所以可以删除此目录下的所有文件,包括其他用户建立的文件,一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件
设置与取消粘着位
1 | 设置粘着位 |
不可改变位权限(chattr权限)
chattr命令
1 | chattr [+-=] [选项] 文件或目录名 |
查看文件系统属性
1 | lsattr 选项 文件名 |