sudo授权
在Linux的管理过程中,不是每一个系统管理员都被允许使用root来管理服务器的。但是总有些普通用户身份的管理员在管理过程中需要执行一些root才有权限的命令,那我们可以使用授权的方式解决。
sudo是Linux中用来进行命令授权的管理工具,可以通过授权的方式让某些普通用户执行只有管理员才能执行的命令,比如关机、重启等等,这样可以减少root身份的持有者,减少root的登录次数,以此来保证服务器的安全性。
我们可以通过修改sudo配置文件(visudo)中的语法来实现
超级管理员:授权/etc/sudoers visudo(具有语法检查机制,判断用户的授权格式是否正确)
root ALL=(ALL) ALL
root :被授权者
ALL :能被管理的机器地址(当做固定格式)
ALL :授予的身份(root)
ALL :授予的命令(命令的绝对路径)(授权具体的命令+选项+操作对象)
普通管理员:
当普通用户执行root授权的命令时,系统查询/etc/sudoers文件中是否有root对用户的授权
当查询普通用户已拥有授权后,需要输入普通用户的密码来确认用户身份
若密码输入成功后,则可以借用root身份来执行已经授权的命令,命令执行完成后,授权结束
练习案例
- 授权xx用户可以重启服务器
- 给xx用户赋予root的所有命令权限
xx ALL= (root) ALL
- 让xx用户可以添加普通用户
xx ALL=(root) /usr/sbin/useradd
- 让xx用户可以给新添加用户修改密码,不允许修改root用户的密码
xx ALL=(root) /usr/bin/passwd,!/usr/bin/passwd root,!/usr/bin/passwd ""
-
授权xx用户可以管理web服务器(httpd)
首先我们要考虑,xx用户需要对httpd程序有重启权限
xx ALL=(root) systemctl restart httpd在考虑xx用户可以对httpd的配置文件的编辑
xx ALL=(root) /usr/bin/vim /etc/httpd/conf/httpd.conf最后是要要求xx用户可以对网页文件进行创建和删除,使用ACL来实现
setfacl -m u:xx:rwx /var/www/html(实现了xx以用户可以在html目录中创建删除文件)
setfacl -m d:u:xx:rwx /var/www/html(实现了xx用户对以后创建的子文件/目录也有权限,也防止了其他系统管理员的误操作)