sudo错误,是模式0777,应该是0440

我收到sudo错误,我该如何解决这个错误?

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

第一选择

关注这篇文章 :

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

     chmod 0440 /etc/sudoers 

另外

您必须将Ubuntu放到LiveCD上,启动到LiveCD,将Ubuntu分区挂载到硬盘驱动器上(打开文件浏览器,如Nautilus,然后单击您的Ubuntu分区;或者单击位置 – >“xxGB分区/您的Ubuntu分区“)。

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

 cd /media//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将赋予所有者(root)和组读取权限,而0700将赋予所有者(root),读取,写入和执行权限。

sudo在这种情况下被破坏了,但是pkexec ( PolicyKit的命令行前端)仍然有效,所以你可以用一个命令修复它。 不需要重新启动。

 pkexec chmod 0440 /etc/sudoers 

这假设已安装PolicyKit。 如果这是一个桌面系统(而不是没有GUI的服务器),那就是。

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

 chmod 0440 /etc/sudoers 

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

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

它会改变许可。 尝试它会工作。

你是怎么做到这些错误的?

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

    1. 启动到Live CD并选择“试用”
    2. 如果你将/etc放在一个单独的分区上,则挂载你的Ubuntu分区(或包含/etc分区)。 这可以通过使用Nautilus或Places菜单等文件浏览器来完成
    3. 通过转到Applications => Accessories => Terminal 打开 终端
    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 gw,o-rwx {} \; 
    6. 接下来,使用Live CD作为恢复文件权限的参考点。 以下命令将使用Live CD上的/etc文件夹作为参考点来更改/etc/media/ubuntu的文件权限。 它只会在同一文件系统( -xdev )上更改文件( -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/ )所以如果您对应用程序有任何问题,可以将其添加为对此答案的评论。

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

 pkexec chmod 0440 /etc/sudoers 

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

  1. 打开2个终端
  2. 在终端2中,运行echo $$以获取PID
  3. 在终端2中运行pkttyagent --process PID_FROM_STEP2
  4. 在终端1中,运行pkexec chmod 0440 /etc/sudoers
  5. 在我的情况下,我还必须运行pkexec chown root:root /etc/sudoers