我如何安装该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
)或,这将解释的权限如何被更改,并且适当的修复将不仅仅是为该可执行文件更改它们。chown
chmod
/
/usr
/usr/bin
pkexec
话虽如此,如果你的系统只有两个问题,即sudo
缺少和pkexec
权限或所有权错误,这仍然很容易修复,但您必须重新启动进入恢复模式或从实时环境 chroot。我建议使用恢复模式。
- 以恢复模式启动。
- 通过运行以下命令重新挂载
/
读写:mount -o remount,rw /
- 确保
pkexec
拥有正确的所有权:chown root:root /usr/bin/pkexec
- 修复
pkexec
的权限:chmod 4755 /usr/bin/pkexec
- 启动您的系统(
exit
并按照提示操作),或使用 重新启动reboot
。 - 按照上面的说明通过运行重新安装该
sudo
包。apt-get
pkexec
这样做的好处是,无论在恢复模式下是否有互联网连接,都可以工作,而无需下载.deb
文件并手动安装。使用--reinstall
,apt-get
将替换 的所有包文件sudo
,这可以修复其他问题。此外,这还可以修复损坏的pkexec
。
然而,这不是唯一的方法。特别是,在San Lin Naing 的回答应该也可以。主要区别在于,这里给出的方法中,chroot 中不执行任何包管理操作,它仅用于修复,pkexec
因此可以在正常启动时用于管理包。
答案2
您需要获得root
权限才能安装任何软件。但是,您已删除该sudo
软件包。
如果您有访问权限root
,您可能能够sudo
再次安装。
参考这个回答。
尝试从bash mode
用户开始root
。
- 重新启动系统。
- 长按下
Shift
键或Esc
键。 - 选择
Advanced options for Ubuntu
。 - 选择
Ubuntu, with Linux x.x.x-xx-generic (recovery mode)
。 - 选择
root Drop to root shell prompt
- 输入
mount -o rw,remount /
命令以获得读写访问权限。 - 输入
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 记忆棒)吗?
- 从它启动并挂载您电脑的系统分区。
/usr/bin/sudo
从实时系统复制 到已挂载分区。- 检查文件的所有者和权限是否相同。
- 重新启动系统。
答案4
您可以sudo
从源代码构建
mkdir sudo-src
cd sudo-src
apt-get source sudo
cd sudo-x.y.z
./configure --prefix=$HOME
make
make install