sudo错误,是模式0777,应该是0440
我收到sudo错误,我该如何解决这个错误?
sudo: /etc/sudoers is mode 0777, should be 0440 sudo: no valid sudoers sources found, quitting
第一选择
关注这篇文章 :
- 重启PC
- 显示GRUB引导选择屏幕时,选择恢复模式。 (如果没有出现,请在底部看到GRUB加载器时按下Shift键)。
-
应该出现一个黑色终端,此时你可以运行这个命令(你应该拥有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来修复它。- 启动到Live CD并选择“试用”
- 如果你将
/etc
放在一个单独的分区上,则挂载你的Ubuntu分区(或包含/etc
分区)。 这可以通过使用Nautilus或Places菜单等文件浏览器来完成 - 通过转到Applications => Accessories => Terminal 打开 终端
- 确定您的Ubuntu分区的文件夹,您可以使用
ls -l /media
列出已安装分区的内容。 它可能被命名为ubuntu
或disk
。 在接下来的步骤中,我将假设ubuntu
。 -
在终端中,默认设置限制权限:
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 {} \;
-
接下来,使用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
- 现在安全
~/errors.log
某处(如http://paste.ubuntu.com/ )所以如果您对应用程序有任何问题,可以将其添加为对此答案的评论。
在Ubuntu中,您可以先按Ctrl + Alt + T打开终端。 之后,您可以使用Ctrl + C复制粘贴下面的命令,然后使用Ctrl + Shift + V粘贴到终端。
pkexec chmod 0440 /etc/sudoers
对我来说,我不得pkexec
建议的一步, 对此 ,我很幸运,当我犯了愚蠢的错误时,碰巧有2个ssh会话:
- 打开2个终端
- 在终端2中,运行
echo $$
以获取PID - 在终端2中运行
pkttyagent --process PID_FROM_STEP2
- 在终端1中,运行
pkexec chmod 0440 /etc/sudoers
- 在我的情况下,我还必须运行
pkexec chown root:root /etc/sudoers