sudo 已被删除

sudo 已被删除

我如何安装该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?

答案1

如果您实际上已删除该sudo命令,则可以通过运行以下命令重新安装提供该命令的包:

pkexec apt-get update
pkexec apt-get --reinstall install sudo

这是因为大多数 Ubuntu 系统都有两种不同的方式允许管理员以 root 身份执行操作,须藤波尔基特。当 sudo 损坏时,Polkit 通常仍然完好无损。

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

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


已表明pkexec虽然没有像 那样被删除,sudo但也有问题。具体来说,它在你的系统上具有错误的所有权或权限。它应该是设置用户标识但是它不是 root,因此无法使用。

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

话虽如此,如果你的系统只有两个问题,即sudo缺少和pkexec权限或所有权错误,这仍然很容易修复,但您必须重新启动进入恢复模式或从实时环境 chroot。我建议使用恢复模式。

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

这样做的好处是,无论在恢复模式下是否有互联网连接,都可以工作,而无需下载.deb文件并手动安装。使用--reinstallapt-get将替换 的所有包文件sudo,这可以修复其他问题。此外,这还可以修复损坏的pkexec

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

答案2

您需要获得root权限才能安装任何软件。但是,您已删除该sudo软件包。

如果您有访问权限root,您可能能够sudo再次安装。

参考这个回答

尝试从bash mode用户开始root

  1. 重新启动系统。
  2. 长按下Shift键或Esc键。
  3. 选择Advanced options for Ubuntu
  4. 选择Ubuntu, with Linux x.x.x-xx-generic (recovery mode)
  5. 选择root Drop to root shell prompt
  6. 输入mount -o rw,remount /命令以获得读写访问权限。
  7. 输入apt install sudo。按照屏幕上的说明进行操作。

如果安装完成,就完成了!

如果不是,这可能需要网络连接。

让我们重新启动系统以正常启动并下载所需的文件。如果是这样,Ctrl + D将再次进入菜单页面并选择resume。这将进入正常启动。

您可能需要离线安装 sudo。这可能是另一项研究。这里你可以找到.deb软件包。你可以用你的操作系统版本下载。下载你的文件sudo_1.8.19-3_xxxx.deb。然后记住你的下载file path

再次重新启动系统bash mode (recovery mode)并按照 1-6 步骤进行操作。

然后dpkg -i *file_path/sudo_1.8.19-3_xxxx.deb。这样就安装好了sudo。完成!Ctrl + D并选择resume正常启动。

完毕!

答案3

是的,我意外删除了 sudo 文件。 ls -l /usr/bin/sudo 的输出是无法访问“/usr/bin/sudo”:没有此文件或目录

只是一个想法:

您还拥有安装 Ubuntu 到系统的介质(DVD/USB 记忆棒)吗?

  1. 从它启动并挂载您电脑的系统分区。
  2. /usr/bin/sudo从实时系统复制 到已挂载分区。
  3. 检查文件的所有者和权限是否相同。
  4. 重新启动系统。

答案4

您可以sudo从源代码构建

mkdir sudo-src
cd sudo-src
apt-get source sudo
cd sudo-x.y.z
./configure --prefix=$HOME
make
make install

相关内容