我最近才开始使用 Ubuntu 14.04。不知怎么的,我更改了文件权限/etc/sudoers
。因此,每次我使用 sudo 运行任何命令时,都会出现以下错误:
sudo: unable to stat /etc/sudoers: No such file or directory
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
我能够以用户身份登录并改回权限。所以现在当我运行ls -l /etc/sudoers
命令时,我得到:
-r--r----- 1 root root 755 жов 14 2016 /etc/sudoers
但我无法让 root 成为所有者。当我尝试使用 sudo 时,仍然会遇到相同的错误。
我读过很多关于这个问题的可怕报道。你能帮我解决这个问题吗?我会非常感激你的建议。
答案1
捷径:
dpkg-重新配置:
如果文件权限有问题/etc/sudoers
,请以 root 权限运行:dpkg-reconfigure sudo
。类似这样的操作pkexec dpkg-reconfigure sudo
应该可以完成工作。
视觉:如果dpkg-reconfigure
不适合您,那么只需运行pkexec visudo
,sudoers
文件将在编辑器中打开,然后只需保存并关闭文件,visudo
将为您修复权限。
毕竟,如果您sudoers.d
也更改了目录权限,那么请运行:
pkexec chmod 755 /etc/sudoers.d
如果文件存在,并且它们的权限也正确,但您仍然收到此错误消息,那么我想到的唯一可能性就是您破坏了其他权限并且sudo
无权访问/etc/sudoers
。最有可能的猜测是的权限/etc/
。
因此运行:
pkexec chmod 755 /etc
我们已经完成了,但是如果您想要一个详细的说明来恢复损坏或删除的sudoers
具有混乱权限的文件,请继续关注,我们将使用另一种方法来修复问题。
介绍
我弄乱了我的/etc/sudoers
文件,结果出现了和你类似的错误。我的情况非常接近,所以我完全删除了我的文件,结果它和你的一模一样。
我为解决这个问题做了什么:
我的 root 帐户已被锁定,并且没有任何密码,所以我无法做我想做的事情。但是,如果您的 root 帐户处于活动状态并且有密码,请切换到 root 用户并su -
跳过此部分。如果没有,请按照说明进行操作。
在进一步讨论之前,我必须提到,您始终可以使用活动磁盘chroot
进入系统,关于使用活动磁盘进行 chroot 的说明很多,所以我不会再费心给出所有这些说明,相反,我将假设我们没有任何活动磁盘,我们将使用已有的磁盘来解决这个问题。如果您愿意这样cheroot
做,那也可以。
获取root访问权限
- 重新启动系统
- 当 grub 出现时按e编辑它
- 在以 linux 开头的行末尾添加
init=/bin/bash
- 按CTRL+X
现在你将进入具有 root 访问权限的 bash shell。首先重新挂载具有写访问权限的文件系统:
mount -o remount,rw /
然后解锁root用户并设置密码:
passwd -u root
passwd root
现在如果您的/etc/sudoers
仍然存在/etc
,请将其移到其他地方:
mv /etc/sudoers /etc/sudoers.broken
因为我们要告诉我们的包管理器这个文件丢失了,它会用一个正确的文件来替换它,所以它不应该在那里。
我们快完成了,重启系统。以普通用户身份登录,打开终端,然后尝试su -
切换到 root 用户。我无法做到这一点,所以我所做的是使用CTRL+ ALT+ F1,进入tty1
,然后我使用我们刚刚设置的新密码以 root 身份登录。
恢复 sudoers
我们只需重新安装该sudo
软件包,但重新安装并不能恢复这个文件,我们应该告诉它dpkg
修复丢失的配置文件,如下所示:
apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall sudo
请记住,它会询问您是否安装该/etc/sudoers
文件,如果选择y
“是”,则表示安装成功。
如果此方法无效,请以 root 身份执行以下操作:
mkdir /root/tmp
cd /root/tmp
apt-get download sudo
dpkg-deb -x sudo*.deb .
cp etc/sudoers /etc/sudoers
cd /root
rm -r tmp
现在权限之间可能存在一些不同,运行dpkg-reconfigure sudo
以修复它。如果它不起作用,请visudo
以 root 用户身份运行,sudoers
文件将在编辑器中打开,然后只需保存并关闭文件,visudo
将为您修复权限。
如果一切顺利,您的 sudoers 文件将恢复,您将能够像以前一样使用 sudo。
答案2
发生这种情况的另一种难以捉摸的方式是,如果您更改了...的权限/
应该是755
(通过检查ls -d /
)。