sudo说明

  1. root用户把本来只能超级用户执行的命令赋予普通用户执行
  2. sudo的操作对象是系统命令

    普通用户允许执行哪些特殊命令需要root用户通过visudo命令进行指定

visudo 命令

该命令实际上修改的是/etc/sudoers文件

  1. ## etc/sudoers文件部分说明
  2. root ALL=(ALL) ALL
  3. ## 用户名 被管理的主机的地址=(可使用的身份) 授权的命令及参数(绝对路径)
  4. 用户名:
  5. 需要允许哪个用户使用特殊命令
  6. 被管理的主机地址:
  7. 允许命令执行的主机,即允许某个用户执行某个特殊命令在IP地址为指定IP的计算机上。
  8. 这个字段既可以填详细的IP也可以填网段IP,填网段地址即做指定IP的模糊匹配。
  9. 一般情况下填ALL或本服务器IP即可,注意,这个字段只有在分布式的服务器管理集群中才有意义。
  10. 可使用的身份:
  11. 可以不填,不填即默认,默认是任意身份,即允许某个用户使用任意身份执行特殊命令。
  12. 显然这里的任意身份主要是指root身份。
  13. 授权的命令及参数:
  14. 默认是所有命令,即允许某个用户使用所有特殊命令,这显然是不可接受的。
  15. 这里必须指定具体的命令,对于非常危险的命令甚至需要指定参数。
  16. %wheel ALL=(ALL) ALL
  17. %用户组名 被管理的主机的地址=(可使用的身份) 授权的命令及参数(绝对路径)
  1. ## 范例 通过visudo命令修改/etc/sudoers文件
  2. gmd ALL=(root) /usr/sbin/useradd ## 允许gmd用户使用root身份在本机执行useradd命令
  3. gmd ALL=() /usr/sbin/useradd ## 允许gmd用户使用任意身份在本机执行useradd命令
  4. gmd ALL= /usr/sbin/useradd ## 允许gmd用户使用任意身份在本机执行useradd命令
  5. gmd ALL=() ALL ## 允许gmd用户以任意身份在本机执行任意特殊命令
  6. ## 允许gmd用户使用任意身份在192.168.175.128服务器上执行/usr/sbin/useradd命令
  7. gmd 192.168.175.128=() /usr/sbin/useradd
  8. ## 允许gmd用户使用任意身份在192.168.0.0网段内的服务器上执行/usr/sbin/useradd命令
  9. gmd 192.168.0.0=() /usr/sbin/useradd
  10. ## 允许gmd用户使用root身份在本机上执行shutdown命令,但命令参数必须是 -r now
  11. gmd ALL=(root) /sbin/shutdown -r now
  12. ## 允许gmd用户组的所有用户使用root身份执行groupadd命令
  13. %gmd ALL=(root) /usr/sbin/groupadd
  14. ## 查看当前用户允许执行的特殊命令
  15. 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命令