当我在终端上输入 sudo 时,我得到:
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
更多信息:
ls -ld / /etc /etc/sudoers
drwxr-xr-x 24 root root 4096 Dez 21 22:44 /
drw-rw-r-x 162 root root 12288 Jan 18 15:13 /etc
-r--r----- 1 root root 746 Jan 18 14:21 /etc/sudoers
pkexec visudo
:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
答案1
运行pkexec chmod 755 /etc
来修复这个问题。
作为steeldriver 建议,此错误是因为/etc
权限错误。显示的权限来自ls -ld /etc
应该看起来像:
drwxr-xr-x
但你的看起来像:
drw-rw-r-x
这阻止了sudo
遍历/etc
访问/etc/sudoers
。
仅尝试检索文件上的元数据(即统计)时出现的“权限被拒绝”错误消息几乎总是意味着文件丢失或无法遍历指向该文件的目录,而当您运行ls
该文件时,它会显示存在。
/etc
我已经通过破坏权限(在虚拟机上)对此进行了测试chmod ug-x
,并且能够生成与您完全相同的错误消息。(您不应该继续chmod
下去ug-x
——这就是我故意打破了权限,而不是如何修复它们。)
修复权限/etc
,授予用户和组所有者可执行权限。缺少这些权限是导致此问题的原因。此外,默认情况下/etc
不需要授予组所有者写入权限,因此除非您知道如果你想这样做,我建议也把那个改回来。
此命令将重置/etc
为默认权限:
pkexec chmod 755 /etc
这应该对你有用,因为你能够以 root 身份运行其他命令pkexec
。通过搜索找到此问题的其他用户通常能够以相同的方式修复它,但对于没有pkexec
(或pkexec
无法工作)的系统,可能需要启动到恢复模式或从实时 CD/DVD/USB 来修复权限。你但其实不需要这么做。只需运行一个简单的命令,就sudo
可以再次工作。
答案2
这可能会有帮助,因为这个方法对我有用
如果你无法通过以下方式打开文件,
sudo vi /etc/sudoers
首先,你应该提供上面 [Eliah][1] 给出的权限,并且,
pkexec chmod 755 /etc
然后尝试使用以下方式打开 sudoers 文件
pkexec vi /etc/sudoers
编辑更改,然后保存并退出。现在尝试 sudo 命令,
sudo apt update
希望这可以帮助。