Ubuntu下将用户添加为sudoer

具有sudoer权限的用户,可以在命令前加sudo使自己临时拥有root权限来执行该命令。一直以为Ubuntu添加sudoer用户很简单,只需改下”/etc/sudoers”配置。今天却遇到了难题,导致所有sudo命令都无法执行,花了好大的功夫才恢复过来。觉得有必要记录一下,分享给大家。

首先看下添加sudoer用户的方法:

  1. 将”/etc/sudoers”文件的写权限赋上
  2. $ sudo chmod u+w /etc/sudoers

    注意,这里是”u+w”。用”a+w”就会出问题,后面会讲到。

  1. 打开”/etc/sudoers”文件
  2. $ sudo vi /etc/sudoers
  1. 添加你要变为sudoer的用户(假设”bjhee”),可以加到root配置下面
  1. 如果你希望该用户输入sudo命令时,不用输密码,你可以将配置改为
  1. 如果你希望所有的sudoer用户输入sudo命令时,都不用输密码,你可以将”%sudo”这一行的配置改为

现在说下我遇到的问题。当我为”/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模式下即可恢复:

  1. 重启Ubuntu,并按”ESC”键,进入GRUB引导菜单
  1. 选择”Advanced options for Ubuntun”,然后选择”…recovery mode”
  1. 等待片刻,你会看到选项菜单,选择”root”,即可进入root模式
  2. Recover Mode Root Menu

既然已经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退出。这个方法看似安全多了,建议大家使用这个方法,就不用像我之前这么折腾了。

转载请注明出处: 思诚之道

《Ubuntu下将用户添加为sudoer》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注