sudo

shell
sudo

-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom ALL=(root) /usr/sbin/useradd ##添加权限,这里的/usr/sbin/useradd表示普通用户执行时必须使用全路径,可以使用which 命令查看哦!
切换到用户tom,验证特殊权限
[root@localhost ~]# su - tom ##切换用户
[tom@localhost ~]$ sudo -l ##查看此用户拥有的特殊权限
[tom@localhost ~]$ sudo /usr/sbin/useradd test1 ##添加用户test1
[tom@localhost ~]$ tail -1 /etc/passwd
test1:x:501:501::/home/test1:/bin/bash ##添加成功
sudo -k ##结束密码有效期
[tom@localhost ~]$ sudo /usr/sbin/useradd test2
[sudo] password for tom: ##有效期结束后,执行特殊命令,需重新验证密码
[tom@localhost ~]$ tail -1 /etc/passwd
test2:x:502:502::/home/test2:/bin/bash
别名应用,alias:

sudoers文件支持使用别名对同类对象进行分组:组名必须使用全大写字母,使用逗号将同类对象命令隔开。
Host_Alias:主机别名
User_Alias:用户别名
Runas_Alias:在哪些主机以谁的身份运行 的别名
Cmnd_Alias:命令别名
[root@localhost ~]# visudo
Host_Alias USERHOSTS = 172.16.0.0/16,127.0.0.0/8,192.168.0.0/24 ##定义主机别名,可以在哪些机器执行特殊命令
Cmnd_Alias USERADMIN=/usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel ##定义命令别名
root ALL=(ALL) ALL
tom ALL=(root) USERADMIN ##此处定义tom可以执行别名USERADMIN中的所有命令
tom USERHOSTS=(ROOT) USERADMIN ##可以在别名USERHOSTS中机器上执行别名USERADMIN中的命令
tom ALL=(root) /usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root
##tom可以以root的身份更改密码,但禁止更改root的密码。
tom ALL=(root) /usr/sbin/useradd,NOPASSWD: /usr/sbin/userdel,/usr/sbin/groupdel,PASSWD: /usr/sbin/usermod,/usr/sbin/groupmod
##这里的/usr/sbin/useradd 操作时必须使用密码;/usr/sbin/userdel, /usr/sbin/groupdel操作时可以不使用密码(跟在其后的所有操作一律不使用密码);/usr/sbin/usermod, /usr/sbin/groupmod 操作时还是要输入密码;还有PASSWD和NOPASSWD不可定义于别名中哦!

原文地址:https://www.cnblogs.com/eiguleo/p/10296744.html