liunx-权限管理
ACL权限
ACL权限简介与开启
ACL是Access Control List(访问控制列表)的缩写,不过在Linux系统中,ACL用于设定用户针对文件的权限,而不是在交换路由器中用来控制数据访问 的功能(类似于防火墙)。
- 查看分区ACL权限是否开启
1 | [ root@localhost ~ ] # dumpe2fs [ -h ] [ /dev/sda3 ] |
- 临时开启分区ACL权限
1 | [ root@localhost ~ ] # mount -o remount,acl [ /bin ] 重新挂载根目录下bin分区,并挂载加入acl权限 |
- 永久开启分区ACL权限
1 | [ root@localhost ~ ] # vim [ /bin ] |
查看与设定ACL权限
- 查看ACL命令:
1 | [ root@localhost ~ ] # getfacl [ 文件名 ] |
- 设定ACL权限命令:
1 | [ root@localhost ~ ] # setfacl [ 选项 ] [ 文件名 ] |
- 给用户组设定ACL权限:
1 | [ root@localhost ~ ] # setfacl -m g:lsp:rwx [ project ] |
最大效有权限与删除ACL权限
- 最大有效权限mask:
mask是用来指定最大有效权限。如果给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限
A | B | 与 |
---|---|---|
r– | r– | r– |
— | r– | — |
r– | — | — |
— | — | — |
- 修改最大有效权限:
1 | [ root@localhost ~ ] # setfacl -m m:rx [ 文件名 ] |
- 删除ACL权限:
1 | [ root@localhost ~ ] # setfacl -x u:用户名 [ 文件名 ] |
默认ACL权限和递归ACL权限
- 递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。(对已经存在的文件有效,对操作之后新建的文件无效)
1 >[ root@localhost ~ ]
- 默认ACL权限:
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限
(对已经存在的文件无效,对操作之后新建的文件有效)
文件特殊权限
SetUID:
SetUID功能:
只有可执行的二进制程序才能设定SUID权限
命令执行者要对该程序有执行权(x)
命令执行者在执行改程序过程时获得该程序文件的属主身份 (相当于赋予其所有者root的权限”灵魂“)
只有可执行的二进制程序过程中有效,程序执行完后不再具有属主的特权
示例:
- passewd命令具有SetUID权限,所有普通用户可以修改自己的密码
1
2
3>[ root@localhost ~ ]$ ll /usr/bin/passwd
># -rwsr-xr-x. 1 root root 259765 2月 22 2023 /usr/bin/passwd- cat命令没有SetUID权限,所有普通用户不能查看/etc/shadow 文件的内容
1
2>[ root@localhost ~ ] $ ll /bin/cat
># -rwxr-xr-x. 1 root root 25675 2月 22 2023 /bin/cat设定SetUID的方法
- 4 代表SUID:
1 | [ root@localhost ~ ] $ chmod 4755 文件名 |
- 取消SetUID的方法:
- 4 代表SUID:
1 | [ root@localhost ~ ] $ chmod 755 文件名 |
危险的SetUID:
- 关键的目录应严格控制写权限。如:
/usr /bin
等 - 用户密码设置严格遵守密码三原则
- 对系统默认具有SetUID权限的文件进行列表制作,定时检查,如果有除列表之外的文件被设置的suid权限,则立即修改
- 关键的目录应严格控制写权限。如:
SetGID针对文件的作用:
- 只有可执行的二进制程序才能设定SGID权限
- 命令执行者要对该程序有执行权(x)
- 命令执行者在执行改程序过程时组身份升级该程序文件的所属组(相当于赋予其所属组的权限”灵魂“)
- 只有可执行的二进制程序过程中有效,程序执行完后不再具有属组的特权
示例
1
2
3
4
5
6
7 >1. # lsp组具有SetGID权限
>[ root@localhost ~ ] $ ll /usr/bin/lsp
># -rwxr-sr-x. 1 root root 259765 2月 22 2023 /usr/bin/lsp
>2. # wslsp组没有SetGID权限
>[ root@localhost ~ ] $ ll /bin/wslsp
># -rwxr-xr-x. 1 root root 25675 2月 22 2023 /bin/wslsp
- SetGID针对目录的作用:
- 普通用户必须对此目录拥有r和x权限,才能进入此目录
- 普通用户在此目录中的有效组会变成目录的属组 (a用户进入此目录后,a创建了属于他的组,他的组也是此目录的组)
- 若普通用户对此目录拥有w权限时,新建的文件默认属组也是这个目录的属组
- SetGID:
- 设定SetGID的方法:
2 代表SGID:
- 设定SetGID的方法:
1 | [ root@localhost ~ ] $ chmod 2755 文件名 |
- 取消SetGID的方法:
2 代表SGID:
1 | [ root@localhost ~ ] $ chmod 755 文件名 |
- Sticky BIT:
SBIT粘着位作用:
- 目前只对目录有效
- 普通用户对该目录需有w与x权限(写与执行权)
- 如果没有粘着位,普通用户因有w权限,所以可以删除此目录下的所有文件,包括其他用户创建的文件。
- 一旦赋予了粘着位,除了root可以删除,普通用户只能删除自己创建的文件,但不能删除其他用户的创建的文件
设置粘着位:
1 代表SBIT:
1 | [ root@localhost tmp ] $ chmod 1755 |
- 取消粘着位:
1 代表SBIT:1
2
3
4
5[ root@localhost tmp ] $ chmod 755
# 文件名 (755:rwxr-xr-x)
[ root@localhost tmp ] $ chmod o -s
# 文件名 (o:其他用户)
文件系统属性chattr权限
chattr命令格式:
1 | [root@localhost ~ ] $ chattr [ +-= ] [ 选项2 ] 文件或目录名 |
查看文件系统属性:lsattr
1 | [root@localhost ~ ] # lsattr [ 选项 ] 文件名 |
系统命令sudo权限
sudo权限:
- root把本来只能超级用户执行的命令权限赋予普通用户来执行
- sudo的操作对象是系统命令
sudo的使用:
1 | [root@localhost ~ ] $ vi sudo --实际修改的是 /etc/sudoers 文件 |
普通用户执行sudo赋予的命令:
1 | [root@localhost ~ ] $ su - eayyoung |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 some森!