sudo在sudoers中配置无需输入密码的方法

发布时间:2019-07-18编辑:脚本学堂
本文介绍下,在使用sudo时,配置其不用输入密码的方法,有需要的朋友作个参考。

注意:编辑sudoers文件,请务必使用visudo命令。

1,最简单配置,让普通用户student具有root的所有权限
执行visudo之后,可以看见缺省只有一条配置:
root    ALL=(ALL) ALL
在下边再加一条配置:
student ALL=(ALL) ALL

第一个ALL指代网络中的主机;第二个指代用户,也就是按哪个用户权限去行使命令;第三个指代执行命令
如 student  ALL=(ALL)   NOPASSWD: /bin/sh   代表只能执行sh
#Defaults    requiretty    解决sudo: sorry, you must have a tty to run sudo
这样,普通用户student就能够执行root权限的所有命令

以student用户登录之后,执行:
sudo su -
然后,输入student用户自己的密码,即可切换成root用户。

2. 让普通用户student只能在某几台服务器上,执行root能执行的某些命令
首先需要配置一些alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种
 

Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias

1) 配置Host_Alias:就是主机的列表
Host_Alias      HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允许执行的命令的列表
Cmnd_Alias      COMMAND_FLAG = command1, command2, command3
3) 配置User_Alias:就是具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
5) 配置权限
配置权限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG

如:

复制代码 代码示例:

Host_Alias      HOST=test3
Cmnd_Alias      COMM=/usr/bin/crontab,/sbin/ifconfig
User_Alias      USER=cacti,sxf

USER HOST=(ALL)      NOPASSWD: COMM

[root@test3 ~]# su - cacti
[cacti@test3 ~]$ ifconfig
-bash: ifconfig: command not found
[cacti@test3 ~]$ sudo ifconfig
Password:
sudo: ifconfig: command not found
[cacti@test3 ~]$ sudo /sbin/ifconfig
eth0      Link encap:Ethernet HWaddr 00:16:3E:01:B1:40
passwd为该用户默认密码

三:日志记录
touch /var/log/sudo
vim /etc/syslog.conf
添加 local2.debug /var/log/sudo
重启日志守护进程 ps aux |grep syslogd
kill -HUP pid

通常并不以root身份登录,但是当执行某些命令(command)时,需要用到root权限,所以通常都是用"sudo command"来执行command。

分享下使用sudo,不用输入密码的方法。

假设用户名为jbxue(属于admin组),使sudo不用密码的方法如下。
运行命令:sudo visudo 或者 sudo vi /etc/sudoers,如果vi来编辑,则保存时记得用"wq!"强制保存,否则会提示只读不能保存的。
就会编辑/etc/sudoers这个文件。
默认情况下,会看到有"%admin ALL=(ALL) ALL"一句话,就是允许admin组在所有主机上执行所有命令,当然是需要passwd的。
1. 如果想把admin组的用户都sudo不用密码那么可以将这一行换为:"%admin ALL=(ALL) NOPASSWD: NOPASSWD ALL"即可。
2. 如果仅仅想让jbxue用户sudo不需密码,则可添加"jbxue ALL = NOPASSWD: ALL"这样一行。
3. 如果让jbxue用户sudo不用密码即可执行某几个命令,可这样写"jbxue ALL = NOPASSWD: /usr/bin/abc.sh, /usr/sbin/adduser"
4. 欲知其他更多配置方式,请运行"man sudoers"看帮助文档吧。
情境分析:
在添加"jbxue ALL = NOPASSWD: ALL"这样一行;但是,jbxue执行sudo时还是需要输入密码,这是为什么?
原来:这一行在"%admin ALL=(ALL) ALL"组策略之前前,后面的组配置覆盖了前面的配置,而jbxue属于admin组,所以需要密码。
这时,只需要将%admin行用#注释掉即可。OK!然后立马就生效了,可能执行sudo时系统都会去读取/etc/sudoers的,所以立即就生效了。

附,公司内部机器上的一个/etc/sudoers配置:
 

复制代码 代码示例:
Defaults    env_reset
Defaults syslog=auth
Defaults log_year,logfile=/var/log/sudo.log
User_Alias ABC = abc
Cmnd_Alias DEFAULT=/bin/*,/sbin/ldconfig,/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel,/bin/rpm,/usr/bin/yum,/sbin/service,/sbin/chkconfig,sudoedit /etc/rc.local,
sudoedit /etc/hosts,sudoedit /etc/ld.so.conf,/bin/linuxjishu/9952.html target=_blank class=infotextkey>mount,sudoedit /etc/exports,/usr/bin/passwd [!-]*,!/usr/bin/passwd root,/bin/su - [!-]*,!/bin/su - root,!/bin/su root,/bin/bash,/usr/sbin/dmidecode,/usr/sbin/lsof,/usr/bin/du,/usr/bin/python,/usr/sbin/xm,sudoedit /etc/profile,sudoedit /etc/bashrc,/usr/bin/make,sudoedit
/etc/security/limits.conf,/etc/init.d/*,/usr/bin/ruby
ABC ALL=(ALL)NOPASSWD:DEFAULT

您可能感兴趣的文章:
centos普通用户增加sudo权限的方法
centos中配置普通用户使用sudo命令的方法
用户无权限使用sudo的解决方法 centos sudoers用法
linux下sudo的日志功能
linux下运行Sudo的方法
经典:su sudo sudoers的用法详解
linux下Sudo的配置方法谈
不输入密码执行sudo命令的配置方法
centos启用sudo的简单方法
sudo的配置方法 /etc/sudoers配置文件说明
centos为普通用户添加sudo权限的方法
centos5.5中sudo日志文件的创建与跟踪
有关Sudo的日志功能详解
centos sudo日志文件的创建与跟踪
sudo日志记录到本地或远程的配置方法
linux下sudo的配置方法分享
如何在centos中启用sudo