删除后可以重新安装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配置中的功能相同的功能,这是有道理的,因为能够sudopkexec成为根用户是主要是使用户成为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包suapt-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.