sudo说明
- root用户把本来只能超级用户执行的命令赋予普通用户执行
- sudo的操作对象是系统命令
普通用户允许执行哪些特殊命令需要root用户通过visudo命令进行指定
visudo 命令
该命令实际上修改的是
/etc/sudoers
文件
## etc/sudoers文件部分说明
root ALL=(ALL) ALL
## 用户名 被管理的主机的地址=(可使用的身份) 授权的命令及参数(绝对路径)
用户名:
需要允许哪个用户使用特殊命令
被管理的主机地址:
允许命令执行的主机,即允许某个用户执行某个特殊命令在IP地址为指定IP的计算机上。
这个字段既可以填详细的IP也可以填网段IP,填网段地址即做指定IP的模糊匹配。
一般情况下填ALL或本服务器IP即可,注意,这个字段只有在分布式的服务器管理集群中才有意义。
可使用的身份:
可以不填,不填即默认,默认是任意身份,即允许某个用户使用任意身份执行特殊命令。
显然这里的任意身份主要是指root身份。
授权的命令及参数:
默认是所有命令,即允许某个用户使用所有特殊命令,这显然是不可接受的。
这里必须指定具体的命令,对于非常危险的命令甚至需要指定参数。
%wheel ALL=(ALL) ALL
%用户组名 被管理的主机的地址=(可使用的身份) 授权的命令及参数(绝对路径)
## 范例 通过visudo命令修改/etc/sudoers文件
gmd ALL=(root) /usr/sbin/useradd ## 允许gmd用户使用root身份在本机执行useradd命令
gmd ALL=() /usr/sbin/useradd ## 允许gmd用户使用任意身份在本机执行useradd命令
gmd ALL= /usr/sbin/useradd ## 允许gmd用户使用任意身份在本机执行useradd命令
gmd ALL=() ALL ## 允许gmd用户以任意身份在本机执行任意特殊命令
## 允许gmd用户使用任意身份在192.168.175.128服务器上执行/usr/sbin/useradd命令
gmd 192.168.175.128=() /usr/sbin/useradd
## 允许gmd用户使用任意身份在192.168.0.0网段内的服务器上执行/usr/sbin/useradd命令
gmd 192.168.0.0=() /usr/sbin/useradd
## 允许gmd用户使用root身份在本机上执行shutdown命令,但命令参数必须是 -r now
gmd ALL=(root) /sbin/shutdown -r now
## 允许gmd用户组的所有用户使用root身份执行groupadd命令
%gmd ALL=(root) /usr/sbin/groupadd
## 查看当前用户允许执行的特殊命令
sudo -l
sudo 命令
命令名称:sudo
命令所在路径:/usr/bin/sudo
执行权限:所有用户
功能描述:允许普通用户以系统管理者的身份执行指令
语法:sudo [选项] [命令内容]
-b:将要执行的指令放在背景执行
-l:显示出自己(执行 sudo 的使用者)的权限
## 范例
sudo -l ## 显示当前用户允许执行哪些特殊命令
## 该命令的返回结果前一段为系统对应该用户的环境变量,第二段才是列出当前用户允许执行哪些特殊权限
[dhj@localhost ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 dhj 可以在 localhost 上运行以下命令:
(root) /usr/sbin/useradd
sudo useradd gmd ## 使用root身份执行useradd命令