'su -'、'sudo bash' 和 'sudo sh' 之间有什么区别?

Pat*_*ryk 31 command-line bash root

我想知道有什么区别

  • su -
  • sudo bash
  • sudo sh

我在做的时候无法以 root 身份登录,su -因为我没有 root 密码 - 我的意思是我有我的用户密码,我可以,sudo "command" 但这个密码不起作用,因为su - 我可以sudo bash用我的用户密码以 root身份登录,我可以登录这样做sudo sh但后来我得到了这种形式的命令提示符 #

des*_*gua 28

背景

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

苏——

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

请参阅如何启用根帐户

须藤

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

须藤 bash

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

参考文献:123

  • 值得注意的是,您可以通过运行 ``sudo su -`` 而无需 root 密码以超级用户身份登录。因为 sudo 以 root 权限运行``su -`` 命令,所以只会提示您输入用户的密码。这样做的好处是可以设置 root 用户的环境,这可能无法通过简单地使用 sudo 运行 shell 来完成。 (7认同)

fos*_*dom 6

su -

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

sudo bash& sudo sh

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


相关问题: