红联Linux门户
Linux帮助

Ubuntu的sudo免密码设置

发布时间:2015-10-14 10:27:33来源:linux网站作者:chinagissoft

正常情况下,在使用sudo命令时,系统是要求输入密码的。输入的密码会保存一小段时间,在这段时间内,sudo不再要求输入密码,之后,再使用sudo,系统仍会要求输入密码,但是在制作镜像过程中,我们可能会在系统自启动项启动很多服务,而且可能有些服务必须使用sudo才能实现,所以实现sudo的无密码也是非常有必要的。


如果希望实现该操作,只需要修改系统的一个文件即可/etc/sudoers


1、查看/etc/sudoers文件权限

sm@ubuntu:~$ ll /etc/sudoers 
-r--r----- 1 root root 745 Feb 11  2014 /etc/sudoers 


2、保险起见,复制一个备份文件

sm@ubuntu:~$ sudo cp /etc/sudoers /etc/sudoers_bak 
[sudo] password for sm: 
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory 


3、由于该文件为只读文件,使用nano编辑器修改

sm@ubuntu:~$ sudo nano /etc/sudoers 

在有效的最后一行,我们需要修改以下内容

# Allow members of group sudo to execute any command 
# 原始为:%sudo   ALL=(ALL:ALL) ALL 
# 修改为: 
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL 

注意:添加一个NOPASSWD关键字,并添加一个英文的“:”。

然后使用Ctrl+O保存,再按Ctrl+X退出即可。

注意:如果在云环境下,用户特别注重安全起见,该操作要慎用!

我在实际操作过程中就是缺少了一个英文的“:”,导致修改再使用sudo命令,报如下错误

sm@ubuntu:/etc$ sudo rm sudoers 
>>> /etc/sudoers: syntax error near line 26 <<< 
sudo: parse error in /etc/sudoers near line 26 
sudo: no valid sudoers sources found, quitting 
sudo: unable to initialize policy plugin 
sm@ubuntu:/etc$ sudo vi sudoers 
>>> /etc/sudoers: syntax error near line 26 <<< 
sudo: parse error in /etc/sudoers near line 26 
sudo: no valid sudoers sources found, quitting 
sudo: unable to initialize policy plugin 
sm@ubuntu:/etc$ 
sm@ubuntu:/etc$ sudo passwd 
>>> /etc/sudoers: syntax error near line 26 <<< 
sudo: parse error in /etc/sudoers near line 26 
sudo: no valid sudoers sources found, quitting 
sudo: unable to initialize policy plugin 

这是由于sudoers文件已经破坏,而且不能生效。


重启电脑,在进入Grub选择界面后,选中 带有“recovery mode”字样的一行(一般是第二行),然后就会进入recovery模式界面

Ubuntu的sudo免密码设置
使用上下键选择root条目,这样就可以得到root权限。

Ubuntu的sudo免密码设置


然后,按如下操作即可:


1、查看df

sm@ubuntu:~$ df 
Filesystem 1K-blocksUsed Available Use% Mounted on 
/dev/sda1  101016992 2652844  93209744   3% / 
none   4   0 4   0% /sys/fs/cgroup 
udev 1010544   4   1010540   1% /dev 
tmpfs 2042721180203092   1% /run 
none5120   0  5120   0% /run/lock 
none 1021348   0   1021348   0% /run/shm 
none  102400   0102400   0% /run/user 


2、把根目录重新mount为可读写模式

# mount -o remount,rw /dev/sda1  /


3、增加可写权限 

# chmod u+w /etc/sudoers  


4、修复出错位置  

# vi /etc/sudoers


5、恢复原有权限  

# chmod u-w /etc/sudoers  


6、重启操作系统

# reboot


不需要打密码的sudo方法:http://www.linuxdiyf.com/linux/14601.html

用echo管道命令给sudo自动输入密码:http://www.linuxdiyf.com/linux/14556.html

Linux实际操作中命令su与sudo的区别:http://www.linuxdiyf.com/linux/13526.html

让sudo命令不再输入密码:http://www.linuxdiyf.com/linux/9948.html