Ubuntu下将用户添加为sudoer
具有sudoer权限的用户,可以在命令前加sudo使自己临时拥有root权限来执行该命令。一直以为Ubuntu添加sudoer用户很简单,只需改下/etc/sudoers
配置。今天却遇到了难题,导致所有sudo命令都无法执行,花了好大的功夫才恢复过来。觉得有必要记录一下,分享给大家。
首先看下添加sudoer用户的方法:
将
/etc/sudoers
文件的写权限赋上$ sudo chmod u+w /etc/sudoers
注意,这里是”u+w”。用”a+w”就会出问题,后面会讲到。
打开
/etc/sudoers
文件$ sudo vi /etc/sudoers
添加你要变为sudoer的用户(假设”bjhee”),可以加到root配置下面
# User privilege specification root ALL=(ALL:ALL) ALL bjhee ALL=(ALL:ALL) ALL
如果你希望该用户输入sudo命令时,不用输密码,你可以将配置改为
bjhee ALL=(ALL:ALL) NOPASSWD:ALL
如果你希望所有的sudoer用户输入sudo命令时,都不用输密码,你可以将
%sudo
这一行的配置改为%sudo ALL=(ALL:ALL) NOPASSWD:ALL
现在说下我遇到的问题。当我为/etc/sudoers
文件赋上写权限时,使用了”a+w”
$ sudo chmod a+w /etc/sudoers
也就是所有用户都可以改此文件。从此执行任何sudo命令,都会报下面的错误:
sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
而且你想改回来都不行,因为无法sudo操作。查看网上资料,说进入root模式下即可恢复:
重启Ubuntu,并按”ESC”键,进入GRUB引导菜单
选择”Advanced options for Ubuntun”,然后选择”…recovery mode”
等待片刻,你会看到选项菜单,选择”root”,即可进入root模式
既然已经root了,应该什么都能做了吧。试下chmod将文件权限恢复,居然还报错,错误信息是:
chmod: changing permissions of '/etc/sudoers': Read-only file system
这是怎么回事,看来网上很多方案都不彻底。你需要执行下面的命令来以读写方式重新挂载文件系统,解决Read-only file system问题
$ mount -o remount rw /
然后chmod恢复/etc/sudoers
权限,输入”exit”退出,选择”resume”选项重启系统。从此一起恢复正常了。
后记
后来又在网上看到一篇更简单的修改sudoer用户的方法。只需输入命令:
$ sudo visudo
就可以编辑sudoers文件了。编辑完后,按”Ctrl+O”保存,注意保存的文件要改为/etc/sudoers
。确认保存输入”Y”,然后按”Ctrl+X”退出。这个方法看似安全多了,建议大家使用这个方法,就不用像我之前这么折腾了。