如何摆脱 - sudo:/usr/lib/sudo/sudoers.so 必须只能由所有者写入 sudo:致命错误,无法加载插件

如何摆脱 - sudo:/usr/lib/sudo/sudoers.so 必须只能由所有者写入 sudo:致命错误,无法加载插件

我正在尝试使用 cgi(python)配置 apache2。

为此,我必须更改某些文件夹和文件的权限,但每次尝试更改文件或文件夹的权限时,都会出现 sudo 致命错误。

例如:

1

j@ubuntu:/etc/apache2$ ls

apache2.conf envvars magic mods-enabled sites-available

conf.d httpd.conf mods-可用 ports.conf sites-enabled

j@ubuntu:/etc/apache2$ sudo chmod 777 httpd.conf

sudo:/usr/lib/sudo/sudoers.so 必须只能由所有者写入

sudo:致命错误,无法加载插件

...................................................................................

2

j@ubuntu:/usr/lib/cgi-bin$ sudo /etc/init.d/apache2 restart

sudo:/usr/lib/sudo/sudoers.so 必须只能由所有者写入

sudo:致命错误,无法加载插件

...................................................................................

3

j@ubuntu:/usr/lib$ sudo chmod -R 777 /usr/lib/cgi-bin

sudo:/usr/lib/sudo/sudoers.so 必须只能由所有者写入

sudo:致命错误,无法加载插件

...................................................................................

笔记:

j@ubuntu:/etc/apache2$ ls -l /usr/lib/sudo/sudoers.so

-rwxrwxrwx 1 root root 177452 2012 年 1 月 31 日 /usr/lib/sudo/sudoers.so

答案1

从评论来看,似乎任何运行sudo都会因此失败。如果改用pkexec其他方法,效果会好吗?例如:

pkexec chmod go-w /usr/lib/sudo/sudoers.so

这应该会删除“组”和“其他”的写权限,并保持“用户”(所有者)的权限不变。

编辑:哎呀,sudo命令写错了。现在已修复。

答案2

Ubuntu 中实际上设置了两种执行管理任务的机制。sudo 是其中之一,在您解决权限问题之前,它及其图形前端(如 gksu 和 gksudo)将无法工作。

另一种机制是 PolicyKit。根据您对文件权限的具体操作,您可能仍可以使用 PolicyKit 进行恢复,以 root 身份运行命令。

pkexec 命令将以 root 身份运行任何(非图形)命令(前提是调用它的用户是系统管理员)。pkexec 也能够以 root 身份运行图形命令(如 nautilus),但这非常困难,因为您必须为它们设置配置文件,描述它们应该如何运行以及应该允许它们做什么。因此,最好使用命令行来解决这个问题……至少要让 sudo 再次工作。(然后,您可以运行 gksu nautilus 来获取 root 文件浏览器,如果您更喜欢使用它来递归编辑文件权限。)

我不知道您对权限做了什么,所以我很难给您一个特定的 pkexec 命令来运行,以解决问题。但您可以纠正 sudo 当前抱怨的特定问题。它说:

sudo:/usr/lib/sudo/sudoers.so 必须只能由所有者写入因此删除该文件的组和其他写权限(同时不修改所有者写权限):

pkexec chmod go-w /usr/lib/sudo/sudoers.so 然后您可以查看 sudo 是否有效(通过运行一些无害的命令,如 sudo ls)。

如果需要使用 chmod 从命令行执行文件权限的其他操作,请参阅 man chmod。

(顺便说一下,这是另一个相关的情况,了解 pkexec 很方便。)

如果您无法让 pkexec 正常工作,请随时在此处发表评论,我会尽力提供进一步的帮助。但您应该知道,即使此方法不起作用,您也不必重新安装 Ubuntu。

相反,您可以从 Ubuntu 实时 CD/DVD 或实时 USB 系统解决问题,因为实时系统将运行 - sudo 将在其上运行 - 并且您可以挂载您的 Ubuntu 分区并以此方式更改权限。

或者作为第三种选择(正如 forestpiskie 所建议的),您可以使用恢复模式。

相关内容