sudo 被删除

Kal*_*esh 11 sudo software-installation

如何安装sudo软件包?

$ apt-get install sudo
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Run Code Online (Sandbox Code Playgroud)

Eli*_*gan 20

如果您确实删除了该sudo命令,则可以通过运行以下命令重新安装提供它的软件包:

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

这是有效的,因为大多数 Ubuntu 系统有两种不同的方式让管理员以 root 身份执行操作,sudoPolkit。当 sudo 被破坏时,Polkit 通常仍然完好无损。

当然,您必须以管理员身份登录才能执行此操作。如果您使用的是被允许使用的帐户sudosudo在系统上存在时返回),那应该可以正常工作。

在最小系统或 Ubuntu 服务器系统上,Polkit 可能不可用,并且在某些配置下您将无法通过pkexecSSH 会话运行命令。


已经指出的是pkexec,虽然不喜欢被删除sudo,也断了。具体来说,在您的系统上,它具有错误的所有权或权限。它应该是setuid root,但它不是,因此不能使用。

了解如何/usr/bin/sudo删除以及如何/usr/bin/pkexec更改权限(或所有权)会很有用。这是对您的系统的两个看似独立的重大更改。如果递归 ( -R)chownchmod已在//usr、 或上执行/usr/bin,这将解释pkexec的权限如何更改,并且适当的修复不仅仅是将它们更改回那个可执行文件。

话虽如此,如果您的系统唯一的两件事sudo是丢失并且pkexec权限或所有权错误,这仍然很容易修复,尽管您必须重新启动进入恢复模式或从实时环境中 chroot 进入。我建议恢复模式。

  1. 以恢复模式启动。
  2. /通过运行重新挂载读写:mount -o remount,rw /
  3. 确保pkexec拥有正确的所有权:chown root:root /usr/bin/pkexec
  4. Fixpkexec的权限:chmod 4755 /usr/bin/pkexec
  5. 引导到您的系统(exit并按照提示进行操作),或使用reboot.
  6. 按照上面的指示,重新安装了sudo运行包apt-getpkexec

这具有在恢复模式下是否有任何 Internet 连接可用的优点,而无需下载.deb文件并手动安装它们。使用--reinstall,apt-get将替换 的所有包文件sudo,这可以解决其他问题。另外,这也修复了您损坏的pkexec.

然而,这不是唯一的方法。特别是,San Lin Naing 的回答中给出的方法也应该有效。主要区别在于,这里给出的方法中,chroot中没有进行包管理操作,仅用于修复,pkexec因此可以在正常启动时用于管理包。