Linux 系统sudo命令

Linux系统中有许多的系统命令和服务为了安全性考虑,因此只有root超级用户才可以去使用。如果普通用户需要做此类操作,则可以使用su - 命令(减号(-)指完全切换到新的用户,即把环境变量信息也变更为新的用户,而不保留原始的用户信息)切换到root帐号来操作,但是每次得输入root帐号的密码,无疑会暴露了root超级管理员的密码。因此我们可以使用sudo程序来把特定命令的执行权限赋予给指定的用户,这样既可保证了正常工作的同时也避免了泄露root超级用户密码。

使用 visudo 命令或 vi编辑/etc/sudoers 配置文件
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
rusky ALL=(ALL) ALL --添加这一行

rusky 允许使用sudo的用户名
ALL 允许任何终端(任何机器)使用sudo
(ALL) 允许以任何用户执行sudo
ALL 允许sudo权限执行所有命令

测试:

[root@rhel7 ~]# su - rusky
Last login: Fri Jul 21 04:29:02 EDT 2017 on pts/0
[rusky@rhel7 ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[rusky@rhel7 ~]$ sudo ls /root   --使用sudo来查看/root目录文件
[sudo] password for rusky: 
anaconda-ks.cfg  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[rusky@rhel7 ~]$ shutdown 
Must be root.
[rusky@rhel7 ~]$ sudo shutdown    --使用sudo来关机
Shutdown scheduled for Fri 2017-07-21 04:32:17 EDT, use 'shutdown -c' to cancel.
[rusky@rhel7 ~]$ 
Broadcast message from root@rhel7.rusky.com (Fri 2017-07-21 04:31:17 EDT):

The system is going down for power-off at Fri 2017-07-21 04:32:17 EDT!

例:rusky属于admin组
1. 如果想把admin组的用户都sudo不用密码那么可以将这一行换为:
%admin ALL=(ALL) NOPASSWD: NOPASSWD ALL

2. 如果仅仅想让rusky用户sudo不需密码,则可修改为如下行:
rusky ALL = (ALL) NOPASSWD: ALL

3. 如果让rusky用户sudo不用密码即可执行某几个命令,可以写成这样:
rusky ALL = NOPASSWD: /usr/bin/abc.sh, /usr/sbin/adduser

注意:有时添加"rusky ALL = NOPASSWD: ALL"这样一行;但是,rusky执行sudo时还是需要输入密码,这是为什么?
原来是这一行在"%admin ALL=(ALL) ALL"组策略之前,后面的组配置覆盖了前面的配置,而rusky属于admin组,所以需要密码。
这时,只需要将%admin行用#注释掉即可。

原文地址:https://www.cnblogs.com/rusking/p/7218842.html