无法在linux上运行sudo命令

无法在linux上运行sudo命令

我正在使用 Linux CentOS,但突然无法运行 sudo 命令。我收到以下错误。即使使用 root 用户,它也会出现相同的错误。

$ sudo ls
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

以下是该文件的权限:

 ls -l /etc/sudoers
-rwxr-xr-x 1 root root 4241 Jun  9 20:36 /etc/sudoers
# which sudo
/usr/bin/sudo
# ls -l /usr/bin/sudo
--ws-wx-wx. 1 root root 130712 Jun 10  2014 /usr/bin/sudo

系统出了什么问题?我该如何修复它?

编辑1

请参见下面的命令输出:

# ls -Z /etc/sudoers
-r--r----- root root ?                                /etc/sudoers

我已对此文件运行 chmod 440 但似乎权限已损坏。

编辑2

我运行以下命令来设置 /etc/sudoers 权限,但它仍然不正确:

root@Cool-Too ~]# chmod 440 /etc/sudoers
[root@Cool-Too ~]# ll /etc/sudoers
-r--r----- 1 root root 4241 Aug 14 22:16 /etc/sudoers
[root@Cool-Too ~]# ll -Z /etc/sudoers
-r--r----- root root ?                                /etc/sudoers

答案1

确实,你的权限非常低。

它们应该类似于:

-r--r----- 1 root root   4188 Mar 31 11:30 /etc/sudoers
---s--x--x 1 root root 130720 Mar 31 13:09 /usr/bin/sudo

要解决此问题,请以 root 身份

chmod 4111 /usr/bin/sudo
chmod 440 /etc/sudoers

如果您+在输出中看到一个标志ls -l,则表示还设置了 ACL;这些应该被删除

setfacl -b /usr/bin/sudo /etc/sudoers

(你似乎没有这个问题;为了完整性我将其包括在内)

由于您的权限被破坏,SELinux 标签也可能被破坏。您应该使用以下命令验证 SELinux 标签是否正确ls -Z

-r--r-----. root root system_u:object_r:etc_t:s0       /etc/sudoers
---s--x--x. root root system_u:object_r:sudo_exec_t:s0 /usr/bin/sudo

这些应该可以修复restorecon

restorecon -v /usr/bin/sudo /etc/sudoers

最后,您的安装可能完全有问题(例如 PAM 配置/etc/sudo.conf)。您可以检查哪些文件已被修改:

rpm --verify sudo

如果这抛出任何看起来不对劲的文件,那么您可能需要删除它们,然后重新安装 sudo。

例如

rm /etc/sudo.conf /etc/pam.d/sudo*
yum reinstall sudo

(这确实需要一个有效的yum设置,所以如果您的存储库不起作用,请不要这样做!)

答案2

如果sudo不起作用,您可以使用以下命令成为 root 用户su -

稍后root后,重新安装即可须藤使用下面这些命令:

百胜删除 sudo

百胜安装须藤

您需要将自己添加到 /etc/sudoers 文件中,输入:

维苏多

通过 sudo 授予 vivek 用户完全权限:

维维克全部=(全部)全部

保存并关闭文件。稍后再这样做,你就有了须藤 您可以使用以下命令成为 root 用户:

须藤-i

如果不起作用,请使用

须藤-s

相关内容