一、ACL权限
1.ACL概述
ACL权限用于解决用户对文件身份不足的问题,但是ACL权限一旦递归之后,不可避免出现权限溢出
2.ACL基本命令
getfacl 文件名 #查询文件的acl权限
setfacl 选项 文件名 #设定acl权限
选项:
-m:设定acl权限
-b:删除acl权限
-x:用户 删除单个用户的acl权限
setfacl -m u:用户名:权限 文件名
setfacl -m g:组名:权限 文件名
setfacl -m u:aa:rwx /test #给test目录赋予aa是读写执行的acl权限
setfacl -m u:cc:rx -R soft/ #赋予递归ACL权限,只能赋予目录
注意:如果给目录赋予ACL权限,两条命令都要输入
setfacl -m u:cc:rx -R soft/ #只对已经存在的文件生效
setfacl -m d:aa:rwx -R /test #只对以后新建的文件生效
3.删除ACL权限
setfacl -x u:st /project/ #删除指定用户和用户组的ACL权限
setfacl -b project/ #删除文件所有的ACL权限
二、sudo授权
1.root身份
作用:给普通用户赋予部分管理员权限
- 赋予的权限越详细,普通用户得到的权限越小
- 赋予的权限越简单,普通用户得到的权限越大
visudo #进去后生效的只有一句话
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用身份) 授权命令(绝对路径)
# %wheel ALL=(ALL) ALL
# %组名 被管理主机的地址=(可使用身份) 授权命令(绝对路径)
- 用户名/组名:代表root给哪个用户或用户组赋予命令,注意组名前加“%”
- 用户可以用指定的命令管理指定IP地址的服务器。如果写ALL,代表可以管理任何主机,如果写固定IP,代表用户可以管理指定的服务器。首先这不是来源IP,查看“man 5 sudoers” 帮助,发现这里的IP指定的是用户可以管理哪个IP地址的服务器即被管理者IP。那么如果你是一台独立的服务器,这里写ALL和你服务器的IP地址,作用是一样的。而写入网段,只有对NIS服务这样用户和密码集中管理的服务器才有意义。如果我们这里写本机的IP地址,不代表只允许本机的用户使用指定命令,而代表指定的用户可以从任何IP地址来管理当前服务器。
- 可使用身份:就是把来源用户切换成什么身份使用,+(ALL)代表可以切换成任意身份。这个字段可以省略
- 授权命令:代表root把什么命令授权给普通用户。默认是ALL,代表任何命令,这个当然不行。如果需要给那个命令授权,写入命令名即可,不过需要注意一定要命令写成绝对路径
2.举例
比如授权用户user1可以重启服务器,则由root用户添加如下行: