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


61

这似乎是一个鸡蛋问题。使用最常见的任务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?


3
我什至不知道sudo也可以清除的好东西!linux太可定制了!
— user247696 2014年

确实不值得回答,因为如果发生这种情况为时已晚,但是没有什么可以阻止您为root用户设置密码。然后su,您可以使用,或者,如果您对计算机具有物理访问权限,则可以直接以root用户身份登录(通常将ssh配置为拒绝以root用户身份登录的尝试)。
— IMSoP 2014年

所有答案的确取决于某种使用特权访问文件系统的方式。对于(反)示例:我的Android Asus Memopad没有sudo,也没有“安全启动”或类似功能。我知道的唯一方法是转到xda-devd / la预建的完整安装包。可以这么说,您很幸运没有此限制。
— 卡尔·威索夫特

@CarlWitthoft Android是Linux的派生产品,而不是实际的Linux发行版。谷歌也做了很多改变(大多数Linux爱好者讨厌)。生根,这是在Android智能手机众所周知,无非是试图获得的权力真正的Linux上的Android。
— 注册用户

4
您不能仅以root用户身份登录吗?
— 康拉德·霍夫纳

Answers:


56

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

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应该起作用。


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

重新安装sudo

(点击放大)


@RaduRadeanu这很有趣,我要尝试这个谢谢你……
— Premkumar 2014年

@Premkumar请谨慎进行测试!屏幕快照中的最后一条命令仅应您使用:sudo apt-get install gksu ubuntu-minimal。但更好的是,使用来检查同时删除了哪些软件包sudo。
— RaduRădeanu2014年

5
@Thebluefish该软件包被称为policykit-1(自12.04开始)。可以将其删除,但要以删除通常在台式机系统(例如gnome-core和)ubuntu-desktop上想要的软件包为代价(在服务器上,任何必要的软件包都不需要该软件包)。但是,Radu,什么决定了您的帐户可以使用pkexec apt-get …?这是您配置的东西,还是会自动发生?如果是,是什么决定了帐户可以执行此操作?
— Gilles 2014年

1
@Gilles我不记得在过去有这种配置。所以,我想那是自动发生的。如果您知道决定某个帐户可以执行此操作的原因,请分享;这超出了我的专业领域。
— RaduRădeanu2014年

2
@Gilles我认为sudo小组成员可以使用pkexec。(我的经验是,将用户添加到该组中会授予pkexec功能,然后从中删除它们会删除pkexec功能;通过这种方式,pkexec功能似乎被赋予与sudo默认sudoers配置中的功能相同的功能,这是有道理的,因为能够sudo和pkexec成为根用户是主要是使用户成为Ubuntu中的管理员的原因。)我认为卸载sudo不会删除该sudo组。但是我不能完全确定我的假设在所有合理的情况下都是正确的。
— 伊利亚·卡根

29

您始终可以启动进入恢复模式,放到root shell并安装它而无需sudo。


16
您可以从此处的链接中添加必不可少的相关部分吗?
— 注册用户

如果grub引导菜单中没有可用的恢复,请按<kbd> e </ kbd>并将“ single”添加到引导行。然后,在启动时,使用设置根密码passwd。正常重启,在命令行输入su新密码,然后运行apt-get install sudo(不带sudo
— -prefix

1
您是如何在root shell上获得Internet连接的?
— Avinash Raj

22

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

  • 从Ubuntu活动磁盘首次启动。

  • 将先前安装的Ubuntu分区挂载到所需的任何目录中/media/ubuntu。

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • 默认情况下,您将其更改为分区后无法连接到互联网,因此请运行以下命令使其正常运行。

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

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

  • 现在chroot进入该挂载目录,

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

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

    exit
    
  • 最后启动您的Ubuntu OS sudo,现在测试您的命令,它肯定会工作。


4

init=/bin/sh在内核命令行上使用额外的参数引导。这将使您直接进入根shell,从那里您可以简单地运行apt-get install sudo然后重启。您可能需要先运行/etc/init.d/networking start以获得有效的网络连接。如果您问我,这比弄回恢复CD或活动磁盘要简单得多。


1

如果您已经root通过此命令设置或更新了用户帐户密码,sudo passwd root则不必担心清除sudo。只需登录您的root帐户然后安装sudo,

su
apt-get install sudo

在此处输入图片说明

点击这里放大


如果启用了root帐户,并且在ubuntu上通常被禁用,则此方法有效。su在我的电脑给“苏:验证失败”,虽然我提供正确的密码
— BЈовић

是的,我的意思是正确的。如果您已经更新了root用户帐户密码,那么您不必担心清除sudo。现在尝试此操作,sudo passwd root它将允许您更新root用户帐户密码。现在重新登录到root帐户通过运行sucommand.Once你能够登录,那么你将可以自由通过清除sudo.Now净化须藤sudo apt-get purge sudo的.login到你的root帐户通过运行重新安装sudo包su和apt-get install sudo
— 阿维纳什·拉吉

-1

sudo(以及任何其他root特权)仅适用于正在运行的OS。如果您很傻并且删除了sudo(或/ usr /),并且没有pkexec之类的替代品,则可以简单地从其他启动,复制丢失的软件,然后重新启动。

物理访问会使系统可能具有的所有软件安全性失效。


我建议对此进行扩展,以解释“复制现有软件”的含义。
— 伊利亚·卡根

虽然不是一个很简单的方法来解决它。
— 赛斯2014年

@Seth在没有操作干预的情况下,我非常怀疑如果不编写其他答案就可以解决此问题。
— Braiam'3

这样做的正确方法是chroot,但是有很多不那么野蛮的方法。例如,以root身份登录(正常方式),或者,如果以某种方式没有root密码,只需将init = / bin / bash设置为内核参数,然后通过整个init系统,包括登录身份验证。
— Orion

-2

这个问题似乎是针对Ubuntu的。作为非ubuntu用户,我一开始甚至不理解sudo在任何情况下都是特例(很多发行版默认情况下都不安装它)。

您根本不需要sudo。这只是一个懒惰的快捷方式,允许您执行root命令,而无需实际以root用户身份登录。但是,如果您除了要做一个命令以外就要做任何其他事情,那么在所有内容上都加上sudo总是很糟糕的。更不用说使用sudo会使用户对权限和root帐户的工作方式一无所知。仅以root用户身份登录,进行系统管理和注销才有意义。su如果您已经以普通用户身份登录,该怎么办。或者,您可以直接以root用户身份登录。

当然,您需要root设置密码,这是合理的配置,否则,您将拥有一个类似于Windows的系统,在该系统中,没有人可以执行任何操作,并且如果某种方式sudo不可用,您实际上会被锁定(这需要工作/etc/,设置$PATH和其他操作)已安装的东西-如果在启动初期出现问题,则可能没有该东西)。


这可能是有用的信息,但不能回答问题。
— 路易斯·德·索萨

确实。这确实不是一个系统,root的密码相关的是残疾人和须藤是默认安装的。而且,如果您查看其他答案,则会发现最后一段也不正确。
— 奥利(Oli)

打算sudo从ubuntu中删除的用户还应该考虑设置ro​​ot密码(其他问题指出了如何执行此操作)。不关心这些东西的用户可以继续使用sudo。
— Orion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.