每当我尝试使用 时,都会发生此错误sudo
。我将文件夹的权限更改/var/
为777
,我认为这会导致错误。请帮助我恢复功能正常sudo
的/var
。
答案1
你有一个很大的问题,但是不是真的为了此处所述原因。
更改所有权限/var
可能会导致您无法正确恢复所有权限,因为您将不知道什么权限每一个文件应该有。您稍后可能会遇到问题。根据具体情况,您的问题可能与安全有关。
因此,您可能希望考虑重新安装 Ubuntu。或者,您可以尝试从另一个类似的、未损坏的系统中获取文件的权限. 权限一般都是一样的。通常。更严重的问题是,你的系统中可能有一些文件在/var
另一个系统中不存在,所以可能不会全部权限将被修复。
不过,在无需工作的情况下在桌面系统上执行管理任务sudo
通常非常容易。
当您知道权限应该是什么时,更改权限很容易,并且很少需要启动恢复模式或从 Live CD 中安装。这是因为,虽然它并不广为人知,但 Ubuntu 的桌面版本(以及当今大多数其他 GNU/Linux 操作系统)具有二设置执行管理任务的方式:
虽然我们倾向于认为sudo
这是在 Ubuntu 上执行操作的方式root
,但实际上 PolicyKit 是大多数(尽管不是全部)图形实用程序成为的方式root
。 (这种情况已经持续了好几年。)
实际上,使用 PolicyKit 手动运行图形程序有时是一项艰巨的任务,因为图形应用程序必须具有特殊的配置文件,PolicyKit 才愿意运行它们。但是终端应用程序不要——使用 PolicyKit 运行基于文本的命令与使用一样简单sudo
。
要执行此操作,请输入pkexec
否则,您需要输入sudo
。 (它们不采用相同的命令行选项,但 的最常见语法sudo
是,并且可以完美地代替它。)sudo command
pkexec
因此,由于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)