更改“/usr”目录的权限后“sudo”不起作用

Bha*_*rat 5 filesystem sudo nautilus gksu

最近我不得不更改文件夹的/usr文件夹权限。现在整个sudo都行不通了。如果我尝试使用以下命令更新我的系统:

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner
sudo: fatal error, unable to load plugins
Run Code Online (Sandbox Code Playgroud)

所以我尝试通过使用此命令以 root 身份打开 Nautilus 来更改文件夹权限

gksudo nautilus
Run Code Online (Sandbox Code Playgroud)

但什么也没发生。鹦鹉螺没有打开。这是紧急情况,因为整个系统sudo都不起作用。当我尝试从 Google 搜索解决方案时,许多人建议重新安装。我不喜欢重新安装。那么还有其他解决方案吗?

Eli*_*gan 7

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

另一种机制是PolicyKit。根据您对文件权限所做的确切操作,您可能仍然可以使用 PolicyKit 恢复以将命令作为root.

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

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

sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner
Run Code Online (Sandbox Code Playgroud)

因此,删除groupother写入owner该文件的权限(同时不修改写入权限):

pkexec chmod go-w /usr/lib/sudo/sudoers.so
Run Code Online (Sandbox Code Playgroud)

然后您可以查看是否sudo有效(通过运行一些无害的命令,如sudo ls)。

如果您需要在命令行中使用 对文件权限执行其他操作chmod,请参阅man chmod

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

如果您在pkexec为此工作时遇到困难,请随时在此处发表评论,我会尽力提供进一步的帮助。但是您应该知道,即使这种方法不起作用,您也不应该重新安装 Ubuntu。

相反,您可以从 Ubuntu live CD/DVD 或 live USB 系统修复问题,因为 live 系统将运行 -sudo将在它上面工作 - 您可以挂载您的 Ubuntu 分区并以这种方式更改权限。

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