sudo 删除后可以重新安装吗?

Reg*_*ser 63 sudo software-installation

这似乎是一个先有鸡还是先有蛋的问题。最常见的任务sudo是安装和删除软件。

sudo apt-get purge <appname>
Run Code Online (Sandbox Code Playgroud)

sudo本身是可以去除的。

sudo apt-get purge sudo # Do not run this command on production computers!
Run Code Online (Sandbox Code Playgroud)

这就是乐趣所在

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory
Run Code Online (Sandbox Code Playgroud)

虽然很明显没有人会清除sudo(除了我之外),但有人可能会被愚弄运行此命令(不是直接,以十六进制模式,或其他任何名称),或者有人可以伪装成技术大师进行SSH和做的烂摊子

那么有没有办法重新安装sudo?

Rad*_*anu 59

我可以使用以下方法安装应用程序:

pkexec apt-get install <appname>
Run Code Online (Sandbox Code Playgroud)

来自man pkexec

  pkexec allows an authorized user to execute PROGRAM as another user. If
  username is not specified, then the program will be executed as the
  administrative super user, root.
Run Code Online (Sandbox Code Playgroud)

所以,我想这也pkexec apt-get install sudo应该有效。


编辑:现在我可以确认:是的sudo可以使用以下方法安装pkexec apt-get install sudo

重新安装须藤

点击放大

  • @Thebluefish 该包名为“policykit-1”(截至 12.04)。它可以被删除,但代价是删除你通常想要在桌面系统上使用的软件包,比如 `gnome-core` 和 `ubuntu-desktop`(在服务器上,任何必要的程序都不需要它)包裹)。但是,Radu,是什么决定了您的帐户可以使用`pkexec apt-get ...`?这是您配置的,还是自动发生的,如果是,是什么决定了帐户可以执行此操作? (5认同)
  • @Gilles 我*认为*`sudo` 组的成员可以使用`pkexec`。(我的经验是,将用户添加到该组会授予 `pkexec` 能力,而将其从该组中删除会删除 `pkexec` 能力;这样,`pkexec` 能力似乎被授予与默认 `sudo` 能力相同的能力sudoers` 配置,这是有道理的,因为能够以 root 身份使用 `sudo` 和 `pkexec` 主要是使用户成为 Ubuntu 管理员的原因。)我认为卸载 `sudo` 不会删除 `sudo` 组。但*我**不**完全确定我的假设在所有合理情况下都是正确的。* (2认同)

Voj*_*fny 29

您始终可以启动到恢复模式,进入 root shell 并在没有 sudo 的情况下安装它。

  • 你能从这里的链接中添加必要的和相关的部分吗? (16认同)

Avi*_*Raj 22

是的,sudo可以通过chroot方法重新安装软件包。

  • 首先从 Ubuntu 实时磁盘启动。

  • 将之前安装的 Ubuntu 分区挂载到您想要的任何目录中/media/ubuntu。就我而言,我将它挂载到.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
    Run Code Online (Sandbox Code Playgroud)
  • 默认情况下,您在 chroot 到分区后无法获得互联网连接。因此,请运行以下命令使其工作。

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    
    Run Code Online (Sandbox Code Playgroud)

感谢@Oli 提供了这段精彩的代码。