sudo:/usr/lib/sudo/sudoers.so必须由uid 0拥有


10

每当我尝试执行任何需要密码的操作时,都会返回以下内容:

u7ur7l3@ubuntu:~$ sudo
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
sudo: fatal error, unable to load plugins
u7ur7l3@ubuntu:~$

因此,我无法从软件中心/软件包管理器中安装任何程序,也无法在需要我的密码的终端中运行任何命令。我可以登录,但仅此而已。

我不小心更改了某些文件的权限,然后又更改了一些尝试修复它的:/。现在我完全不知道该怎么办。

这是我尝试使用pkexec重新使sudo工作时发生的情况:

u7ur7l3@ubuntu:~$ pkexec chown root /usr/lib/sudo/sudoers.so
Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ExecFailed: Failed to execute program /usr/lib/dbus-1.0/dbus-daemon-launch-helper: Success 

u7ur7l3@ubuntu:~$ sudo ls
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0 sudo: fatal error, unable to load plugins

为了更改权限,我将Root Actions用作海豚服务/插件,因此历史记录不会显示权限更改。

我只是意识到声音不再起作用了。当我进入Phonon时,我的默认设置和播放设备都没有。另外,我没有关机选项,只能注销或退出。


您运行pkexec命令以来,声音和关机问题是新的吗?
伊莱亚·卡根

@Eliah Kagan,不,我登录计算机后就意识到声音问题,昨晚关闭计算机时我意识到了关机问题。我最后只是按住电源按钮。
7UR7L3

我已经扩大了我的答案提供的说明应该工作,即使没有sudo和PolicyKit的(通过pkexec)的工作。
伊莱亚·卡根

2
su root chown -R root:root / usr / lib /

Answers:


20

至少一个重要系统文件的所有权是错误的。那是一件坏事;如果很多系统文件都发生了这种情况(也许您在某个时候运行了sudo chown带有-R标志的大命令?),则可能导致许多其他系统错误和不稳定。因此,如果您最近安装了Ubuntu,则可能要按照Adam Heathcote的建议重新安装。

但是您不必重新安装即可解决此问题。相反,只需修复该文件的所有权即可。如果此后您发现有关其他文件的错误,也可以对其进行修复(尽管您可能必须告诉我们错误消息是什么,所以我们也可以告诉您如何修复它们)。

sudo不工作,但使用sudo一个2种方式管理员执行操作的在Ubuntu。另一个是Polkit(以前称为PolicyKit)。

运行以下命令,该命令使用Polkit(通过pkexec)将/usr/lib/sudo/sudoers.soback 的所有权更改为root(即uid 0):

pkexec chown root /usr/lib/sudo/sudoers.so

然后尝试sudo再次使用。您可以运行类似的小程序,看看是否收到错误消息。sudo ls

最后,我建议运行history以显示您已运行的所有命令。希望它将列出您已运行的所有更改了权限的命令。假设sudo现在可以使用,我建议发布一个新问题,包括的输出history,以获取撤消已完成的所有文件所有权和权限更改的帮助。

如果pkexec也不行...

您尝试过pkexec,但没有成功。由于sudoPolkit和Polkit都不允许您以root身份执行操作,因此您必须启动进入恢复模式并获得root shell。为此,请Shift在启动计算机时按住,以确保获得可见的GRUB启动菜单。选择一个包含单词恢复模式的条目(通常,应选择最接近单词顶部的那个单词)。然后,您将获得一个菜单,其中有许多选项-选择该选项以放置到root shell。

有关在恢复模式下访问根shell的详细说明,请参见此处:

有了root shell之后,运行:

chown root /usr/lib/sudo/sudoers.so

如果您收到有关文件或文件系统不可修改的错误,请以读写方式重新挂载它:

mount -rw -o remount /

(有关重新安装的想法及其操作方法的资料来源:这个大多无关的答案。)

然后,在运行该mount命令后,chown再次运行以上命令,看看它是否有效。

在恢复模式下完成操作后,可以通过运行以下命令重新启动:

reboot

sudo然后应该起作用,或者至少给出其他错误。

最后,请注意,鉴于您所显示的错误,现在许多文件可能具有错误的所有权或权限。如果您能弄清楚以这种方式修改了哪些文件,那将是理想的选择。例如,如果您可以确定所有文件都位于几个特定的​​文件夹中,则可能可以更正最近遇到的问题的全部范围。

重新安装绝对是一个选项,但是特别是如果您更改的只是所有权(而不是权限,随着权限变化的增加,权限将很难重构),应该可以简单地将权限递归地设置回其原始所有者(通常是root) )并完全消除损坏。

获得sudo再次合作是第一步。希望以上技术可以使您做到这一点。


我遵循了这些指示,但是当我重新启动到kubuntu时,问题仍然存在。同样的错误。此时,重新安装可能会更容易。:/
7UR7L3

另外,有什么办法可以做这样的事情:askubuntu.com/questions/9135/…保存所有内容?所有一起作为一个伪bash脚本不会工作,因为sudo的参与使....
7UR7L3

@ 7UR7L3将备份有关安装了哪些软件包的信息,以及有关程序的系统范围设置的大多数信息。结合使用主目录的完整备份,可以使您在删除现有系统并安装新系统之后,将其大部分还原为原来的状态。请确保始终备份所有真正重要的文件(例如您的文档)。如果您发现需要有关适用于您的情况的该技术的更多信息,建议您发布一个新问题(但是我不介意您是否在此处提出评论)。
Eliah Kagan 2013年

是否有解决所有这些问题的好方法?我有一个1 TB的外部驱动器,可以将其备份到其中,但是当我插入它时它不会出现在任何地方。它亮着表示它可以工作,但是屏幕上没有任何变化,并且在海豚中也没有任何地方。然后,一旦我开始工作,我应该如何保存所有内容。在程序包管理器中,我可以将已安装的程序包保存到文本文档中,但这实际上是我想出的所有方法来保存信息。几乎所有其他解决方案都涉及sudo,但仍然无法正常工作。
7UR7L3

@ 7UR7L3用于备份文件吗?从实时CD / DVD或实时USB引导。您可以从那里访问文件,并将它们备份到外部驱动器。如果您的外部驱动器也没有出现在实时系统中,那么这是一个完全独立的问题,我可能无法为您提供帮助,并且几乎可以肯定地不在评论范围之内。因此,如果发生这种情况,我建议发布一个新问题。如果您在此处评论并提供了新问题的链接,我将确保对其进行研究并尽可能提供帮助。
伊莱亚·卡根
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.