“ su-”,“ sudo bash”和“ sudo sh”有什么区别?


29

我想知道两者之间有什么区别

  • su -
  • sudo bash
  • sudo sh

我在执行su -操作时无法以root用户身份登录,因为我没有root密码-我的意思是我拥有可以使用的用户密码,sudo "command" 但是该密码不起作用,因为su - 我可以sudo bash使用用户密码以root 用户身份登录,并且在这样做,sudo sh但随后我收到此格式的命令提示符 #

Answers:


27

背景

在Linux(通常是Unix)中,有一个名为Root超级用户。超级用户可以做任何事情,并且做任何事情,因此作为超级用户进行日常工作可能很危险。您可能会错误输入命令并破坏系统。理想情况下,您以仅拥有手头任务所需特权的用户身份运行。在某些情况下,这一定是Root,但大多数情况下是普通用户。

su-

此命令用于以root帐户登录。
默认情况下,root帐户密码在Ubuntu中是锁定的。这意味着您不能直接以Root身份登录,也不能使用su命令成为Root用户。但是,由于Root帐户实际存在,因此仍然可以使用root级权限运行程序。这是sudo的用处-它允许授权用户(通常是“管理”用户)以root身份运行某些程序,而无需知道root密码。

请参阅如何启用根帐户

须藤

该命令以超级用户身份运行“ sh”。
sh实用程序是命令语言解释器,它将执行从命令行字符串,标准输入或指定文件读取的命令。

须藤bash

此命令以超级用户身份运行“ bash”。
Bash是外壳程序或命令语言解释器。Bash是sh兼容的shell,它融合了Korn shell(ksh)和C shell(csh)的有用功能。它旨在符合IEEE POSIX P1003.2 / ISO 9945.2 Shell and Tools标准。它在sh上提供了功能上的改进,可用于编程和交互使用。另外,大多数sh脚本可以由Bash运行,而无需修改。

参考文献:123


7
值得注意的是,您可以通过运行sudo su -而无需超级用户密码而以超级用户身份登录。由于sudo su -具有root权限运行命令,因此只会提示您输入用户密码。这样做的好处是可以设置root用户的环境,而仅通过使用sudo运行shell可能无法完成。
亚伦D

6

su -

这将更改您的用户标识符并继承环境变量,就像您使用该用户登录一样。通常,您将使用该格式su - <userid>以用户身份登录。如果删除“ userid”,则表示您正在尝试以root用户身份登录-不能(除非您更改root密码)。

sudo bashsudo sh

sudo之后的任何东西都是要运行的程序-因此,在这些情况下,您要求运行几个shell-分别是bash和dash。请使用man bashman sh有关不同Shell的更多详细信息。


相关问题:


好的,感谢您的答复,然后root的默认密码是什么?在哪里可以找到它?
Patryk

@lordmonkey root没有密码,不需要密码。除了sudo要求您输入密码而不是root密码外,sudo -i将为您提供一个登录shell su -
盖尔哈2011年
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.