孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
Ubuntu问题sudo: /etc/sudoers is mode 0640, should be 0440的解决方法

以前一直使用Fedora系统,今天偶尔用了用Ubuntu Linux系统,感觉那个sudo有点很不适应啊。

我的经历还是有一点点曲折。首先我使用用户shiyanjun创建了/home/shirdrn目录,本来以为之后可以chown给shirdrn用户的;然后我才创建了一个用户shirdrn,默认指定shirdrn组,提示我/home/shirdrn目录不属于shirdrn,这是肯定的。当我su到shirdrn用户,并想使用sudo权限将/home/shirdrn目录chown过来的时候,结果提示我:

shirdrn is not in the sudoers file

所以我就想把shirdrn用户加入到sudoers文件中,具体位置是/etc/sudoers,可以看到,该文件默认的权限是-r-r-----,只对于root组的root用户,也就是0440权限。默认root用户也不能对该文件执行w权限,必须通过root用户首先添加对该文件的w权限才能修改该文件。

结果,在网上搜到一篇文章,说是什么Alt+F1等等,最后su到用户shiyanjun,增加了/etc/sudoers文件的w权限:

sudo chmod u+w /etc/sudoers

修改成功了,结果出现了可以使用用户shiyanjun修改/etc/sudoers文件,但是因为是read-only的,无法保存。再执行sudo命令,老是出现提示:

sudo: /etc/sudoers is mode 0640, should be 0440

彻底要崩溃了,我感觉,此时如果不使用超级用户(以前在Fedora下root最管用了)是解决不了问题的,这时就想到如何启动Ubuntu下的root用户,网上搜索了一通,不得而知,最后终于找到了一种解决方式,文章出自http://www.craigmayhew.com/blog/2009/09/ubuntu-error-sudo-etcsudoers-is-mode-0640-should-be-0440/,非常感谢。下面简单叙述一下具体解决过程:

1、重新启动Ubuntu系统,启动的时候按住Esc键,可以看到引导选项;

2、可以看到引导选项列表中,有一项的末尾括号里是这样的(recovery mode),也就是恢复模式,选择这项,回车继续;

3、数据加载一会,进入到Recovery Menu页面,可以看到有如下选项:

resume
clean
dpkg
fsck
grub
netroot
root
xifx

选择root,也就是进入试用root用户进行系统恢复,在里面可以执行超级用户权限的操作。

回车后,可以看到熟悉的

root@TUZKI:~#

命令提示符了。

4、设置或者撤销/etc/sudoers文件的权限

此时,你可以执行:

chmod u-w /etc/sudoers

撤销对/etc/sudoers文件的w权限。我是直接增加了root的w权限,直接将用户shirdrn添加到了/etc/sudoers文件中,在

root    ALL=(ALL)    ALL

这行下面增加了如下一行:

shirdrn    ALL=(ALL)    ALL

这就使得用户shirdrn成了sudo组的用户了,可以执行超级权限了。

退出recovery mode,重新启动系统,进入后,可以使用shirdrn用户创建/home/shirdrn目录了:

sudo mkdir /home/shirdrn

因为shirdrn已经是sudo组的用户了,执行cd ~再执行pwd可以看到shirdrn用户的/home/shirdrn目录了。

posted on 2011-04-15 20:38  孤独的猫  阅读(483)  评论(0编辑  收藏  举报