当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

这似乎是一个chicken-egg问题。使用sudo最常见的任务是安装和删除软件。

sudo apt-get purge <appname>

但是sudo本身可以被删除。

sudo apt-get purge sudo # Do not run this command on production computers!

这就是有趣的地方

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory

虽然显而易见的是,没有一个正确思想的人会清除sudo(除了我)之外,有人可能会被愚弄来运行这个命令(不是直接,以十六进制模式,或者其他任何方式),或者一个人可以伪装成技术SSH大师,做一团糟。

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

最佳解决思路

我可以用以下方法安装应用

pkexec apt-get install <appname>

来自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. 

所以,我认为pkexec apt-get install sudo应该也可以。


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

sudo,software-installation,ubuntu

(click to enlarge)

次佳解决思路

您始终可以启动到Recovery Mode,放到root shell并在没有sudo的情况下安装它。

第三种解决思路

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

  • 首先从Ubuntu live disk启动。

  • 将以前安装的Ubuntu分区挂载到您想要的任何目录中。在我的例子中,我将它安装在/media/ubuntu中。

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • 在默认情况下,您无法在chrooted进入分区后获得Internet连接。因此,请运行以下命令使其正常工作。

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    

感谢@Oli为this提供了精彩的代码。

  • 现在chroot到该安装目录,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • 通过运行安装sudo软件包,

    # apt-get install sudo
    
  • 现在退出chrooted环境。

    exit
    
  • 最后启动你的Ubuntu OS.Now测试你的sudo命令,它肯定会起作用。

第四种思路

在内核命令行上使用额外参数init=/bin/sh引导。这将直接将您置于根shell中,您可以从中轻松运行apt-get install sudo然后重新启动。您可能需要先运行/etc/init.d/networking start以获得有效的网络连接。如果你问我的话,比使用恢复CD或实时磁盘更简单。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1237.html,未经允许,请勿转载。