sudo错误,模式为0777,应为0440


26

我收到sudo错误,如何解决此错误?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 

如之前的用户所述,当sudoers.d / README文件的chmod错误时,请使用“ chmod 0440 / etc / sudoers”。
kentfx 2012年

您是否建议问题出在权限上/etc/sudoers.d/README时,该错误仍然可以说明sudo: /etc/sudoers is mode 0777, should be 0440
伊莱亚·卡根

Answers:


26

第一选择

这篇文章之后

  1. 重新启动电脑
  2. 显示GRUB引导选择屏幕时,选择“恢复模式”。(如果没有出现,Shift请在底部看到GRUB加载器时按键)。
  3. 应该出现一个黑色终端,此时您可以运行以下命令(您应该具有root特权):

    chmod 0440 /etc/sudoers
    

或者

您必须将Ubuntu放到LiveCD上,启动到LiveCD上,将Ubuntu分区安装在硬盘上(打开文件浏览器,例如Nautilus,然后单击Ubuntu分区;或者单击Places->“ xxGB分区/您的Ubuntu分区。 ”)。

然后,在LiveCD会话中打开一个终端,然后键入以下两个命令:

cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers

额外的问题

如果有任何错误(如下所述),请按照错误提示进行操作,并使用上述两个步骤之一相应地调整每个文件:

sudo apt-get update sudo:/etc/sudoers.d/README是模式0777,应该是0440 sudo:/ var / lib / sudo非所有者可写(040777),应该是模式0700 [sudo]的密码

通过以下步骤解决:

chmod 0440 /etc/sudoers.d/README
chmod 0700 /var/lib/sudo

这两个命令都应与上面概述的步骤一起使用。他们将更改与该文件关联的文件权限。0440将授予所有者(根)和组读取权限,而0700将授予所有者(根),读取,写入和执行权限。


我可以使用sudo命令,但有限制。 sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
user20698 2011年

@Alex:ESC是GRUB的遗产吗?对于GRUB2,应按Shift键。
Lekensteyn 2011年

@ user20698:您不需要sudo第一个,第二个应该通过Live CD完成。
Lekensteyn 2011年

如果sudoers是0777,用户是否应该在chmod 0440 /etc/sudoers没有sudo的情况下运行,因为每个人都可以写sudoers?
SeppoErviälä11年

2
@Seppo:否,只有文件所有者才能更改文件权限。
Lekensteyn

16

sudo在这种情况下会损坏,但是pkexecPolicyKit的命令行前端)仍然有效,因此您可以使用单个命令对其进行修复。无需重新启动。

pkexec chmod 0440 /etc/sudoers

假定已安装PolicyKit。如果这是台式机系统(而不是没有GUI的服务器),则为。


4

启动进入恢复模式,选择根shell,然后:

chmod 0440 /etc/sudoers

或者,如果您不想重新启动,则可以使用以下替代方法:

pkexec chmod 0440 /etc/sudoers
pkexec chmod 0440 /etc/sudoers.d/README

它将更改权限。试试看,它将起作用。


1
你为什么chmod要向其中一些文件440发送0440?你不应该0440统一使用吗?以及为什么要更改/etc/sudoers.d/README使用pkexec方式的权限,而不能更改其他方式的权限?那其他可能的文件/etc/sudoers.d呢?
伊利亚·卡根

1

您是怎么得到这些错误的?

  • 如果您这样做:sudo chmod -R 777 /etc,则需要Live CD来修复它。

    1. 启动进入Live CD,然后选择“尝试”
    2. 挂载你的Ubuntu分区(或者包含分区/etc,如果你已经把/etc一个单独的分区)。这可以通过使用像鹦鹉螺或文件浏览器来完成地方菜单
    3. 通过转到应用程序 => 附件 => 终端打开终端
    4. 确定您的Ubuntu分区的文件夹,您可以使用列出已挂载分区的内容ls -l /media。它可能名为ubuntudisk。在接下来的步骤中,我假设ubuntu
    5. 在终端中,默认情况下设置限制性权限:

      sudo find /media/ubuntu/etc -type f -exec chmod g-wx,o-rwx {} \;
      sudo find /media/ubuntu/etc -type d -exec chmod g-w,o-rwx {} \;
      
    6. 接下来,使用Live CD作为还原文件权限的参考点。以下命令将更改/etc/media/ubuntu使用/etcLive CD上的文件夹作为参考点的文件权限。它只会更改同一文件系统()上文件(-type f)和目录(-type d)的权限-xdev。任何错误都会写入~/errors.log错误,如“找不到文件”之类的错误表示已安装系统上的文件,但未在Live CD上找到。第5步中的命令应该为其设置正确的权限,但是为了获得最佳效果,最好重新安装软件包。

      cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
      
    7. 现在可以在~/errors.log某处安全(例如http://paste.ubuntu.com/),因此如果应用程序有任何问题,可以将其添加为此答案的注释。

1

在Ubuntu中,您可以先点击Ctrl+ Alt+ T来打开终端。之后,您可以使用Ctrl+ 复制粘贴以下命令,C并使用Ctrl+ Shift+ 粘贴到终端中V

pkexec chmod 0440 /etc/sudoers

0

对我来说,我不得不再增加一步pkexec建议,为此,我很幸运当我犯了一个愚蠢的错误时,我碰巧有两个ssh会话:

  1. 打开2个终端
  2. 在端子2中,运行echo $$以获取PID
  3. pkttyagent --process PID_FROM_STEP2在2号航站楼中运行
  4. 在1号航站楼,运行 pkexec chmod 0440 /etc/sudoers
  5. 就我而言,我还必须跑步 pkexec chown root:root /etc/sudoers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.