sudo:/var/lib/sudo/navneet 可由非所有者写入(040777),应为模式 0700

sudo:/var/lib/sudo/navneet 可由非所有者写入(040777),应为模式 0700

每当我尝试使用 时,都会发生此错误sudo。我将文件夹的权限更改/var/777,我认为这会导致错误。请帮助我恢复功能正常sudo/var

答案1

你有一个很大的问题,但是不是真的为了此处所述原因

更改所有权限/var可能会导致您无法正确恢复所有权限,因为您将不知道什么权限每一个文件应该有。您稍后可能会遇到问题。根据具体情况,您的问题可能与安全有关。

因此,您可能希望考虑重新安装 Ubuntu。或者,您可以尝试从另一个类似的、未损坏的系统中获取文件的权限. 权限一般都是一样的。通常。更严重的问题是,你的系统中可能有一些文件在/var另一个系统中不存在,所以可能不会全部权限将被修复。

不过,在无需工作的情况下在桌面系统上执行管理任务sudo通常非常容易。

当您知道权限应该是什么时,更改权限很容易,并且很少需要启动恢复模式或从 Live CD 中安装。这是因为,虽然它并不广为人知,但 Ubuntu 的桌面版本(以及当今大多数其他 GNU/Linux 操作系统)具有设置执行管理任务的方式:

  • sudo,它将无法工作,因为它要求的权限/var正确。
  • PolicyKit,它对错误权限的容忍度更高,并且通常仍然有效。

虽然我们倾向于认为sudo这是在 Ubuntu 上执行操作的方式root,但实际上 PolicyKit 是大多数(尽管不是全部)图形实用程序成为的方式root。 (这种情况已经持续了好几年。)

实际上,使用 PolicyKit 手动运行图形程序有时是一项艰巨的任务,因为图形应用程序必须具有特殊的配置文件,PolicyKit 才愿意运行它们。但是终端应用程序不要——使用 PolicyKit 运行基于文本的命令与使用一样简单sudo

要执行此操作,请输入pkexec否则,您需要输入sudo。 (它们不采用相同的命令行选项,但 的最常见语法sudo是,并且可以完美地代替它。)sudo commandpkexec

因此,由于sudo已损坏,您无法运行:

sudo chmod 0755 /mnt/var/lib/sudo
sudo chmod 0700 /mnt/var/lib/sudo/<username>

但是你跑步:

pkexec chmod 0755 /mnt/var/lib/sudo
pkexec chmod 0700 /mnt/var/lib/sudo/<username>

这是一个好的开始,它可能会sudo再次发挥作用。(它不会修复所有其他文件/var, 尽管。)

相关(但在大多数情况下并不相同)的pkexec有帮助的情况:
如何修改无效的 /etc/sudoers 文件?它会抛出一个错误,并且不允许我再次编辑来修复它
尝试更改 ushare 配置时意外阻止了对 sudoers.d 的访问
更改“/usr”目录的权限后,“sudo”不起作用
如何在“chmod -R 777 /usr/bin”之后修复 sudo? sudo 错误,是模式 0777,应该是 0440
          如何修复“sudo:/etc/sudoers 模式为 0640,应该是 0440?”
安装 ZFS 改变了我的 sudoers 文件
密码不适用于 sudo(“身份验证失败”)
为什么我随机更改了一些文件权限后什么都不起作用?
使用“sudo chmod 665 /etc”在 oneiric(ubuntu11.10)中更改了 /etc 权限,现在无法使用 sudo
如何在没有密码的情况下运行特定的 sudo 命令?(以防万一)
无法从 Ubuntu Live CD 写入 /etc/sudoers(以防万一)

答案2

你手头上有一个大问题。首先,为了让你sudo重新工作,你需要更改文件夹及其内部/var/lib/sudo文件的权限。navneet

但是,为了做到这一点,您需要 root 访问权限。如果您碰巧更改了 root 密码,那么您只需要su -更改权限,如下所示:

$ chmod 0755 /var/lib/sudo
$ chmod 0700 /var/lib/sudo/navneet

现在一切就绪。但是,如果您尚未更改 root 密码,则需要通过其他方式获取 root 访问权限。在标准 Ubuntu 安装中,您可以通过启动到恢复模式来执行此操作。这可以通过在 BIOS 屏幕消失后重新启动并按下 Shift 键来完成。建议反复按下该键,但速度要慢。如果成功,将出现 GRUB 菜单,您可以选择第二个选项(标记为恢复模式)。在下一个菜单中,您应该选择 root shell。这将带您进入 root 提示符。在 12.04 上,您需要使硬盘可写才能进行任何更改。此命令为mount -o,remount,rw /。可能需要多次尝试才能调出 GRUB 菜单。

或者,您可以使用启动 CD。我建议您使用 Gentoo 最小安装 CD,因为它体积小,可以完成工作,还有几张专业恢复 CD 可用。如果您选择实时启动而不是安装,标准安装 CD 通常可以正常工作。例如,通过 CD 启动计算机,并将分区挂载到/mnt/( mount /dev/sda1 /mnt)。然后,您可以像这样更改权限:

chmod 0755 /mnt/var/lib/sudo
chmod 0700 /mnt/var/lib/sudo/navneet

最好使用它来备份您的数据,然后重新安装。因为其他应用程序可能会因为错误的权限而停止工作,并且可能会产生其他危害您机器安全的后果。

答案3

我遇到了类似的错误,但实际上仍然能够使用 sudo(它显示了错误消息,然后按照我告诉它的方式执行操作),因此我使用以下命令修复了它:

sudo chmod -R 0700 /var/lib/sudo

(我运行的是 Ubuntu 14.04)

相关内容