问题描述
我想知道两者之间有什么区别
-
su -
-
sudo bash
-
sudo sh
我在执行su时无法以root身份登录-因为我没有root密码-我的意思是我拥有可以使用sudo “command”的用户密码,但是该密码不适用于su-我可以使用sudo bash以root身份登录我的用户密码,我可以在执行sudo sh时登录,但是随后我收到以下格式的命令提示符:
最佳方案
背景
在Linux(通常是Unix)中,有一个名为Root的超级用户。超级用户可以做任何事情,并且做任何事情,因此作为超级用户进行日常工作可能很危险。您可能会错误输入命令并破坏系统。理想情况下,您以仅拥有手头任务所需特权的用户身份运行。在某些情况下,这一定是Root,但是在大多数情况下,它是普通用户。
su-
此命令用于以root帐户登录。默认情况下,root帐户密码在Ubuntu中是锁定的。这意味着您不能直接以Root身份登录,也不能使用su命令成为Root用户。但是,由于Root帐户实际上存在,因此仍然可以运行具有root-level特权的程序。这就是sudo的用处-它允许授权用户(通常是”Administrative”用户)以root身份运行某些程序,而无需知道root密码。
请参阅How to Enable Root Account。
须藤
此命令以超级用户身份运行”sh”。 sh实用程序是命令语言解释器,它将执行从命令行字符串,标准输入或指定文件读取的命令。
须藤bash
此命令以超级用户身份运行”bash”。 Bash是 shell 程序或命令语言解释器。 Bash是sh-compatible shell ,它结合了Korn shell (ksh)和C shell (csh)的有用功能。它旨在符合IEEE POSIX P1003.2 /ISO 9945.2 Shell and Tools标准。它在sh上提供了功能上的改进,可用于编程和交互使用。另外,大多数sh脚本可以由Bash运行,而无需修改。
次佳方案
su -
:
这将更改您的用户标识符并继承环境变量,就像您使用该用户登录一样。通常,您将使用su - <userid>
格式以用户身份登录。如果删除”userid”,则假定您正在尝试以root用户身份登录-您不能(除非您更改root密码)登录。
sudo bash
& sudo sh
:
sudo之后的任何东西都是要运行的程序-因此,在这些情况下,您要求运行几个shell-分别是bash和dash。请使用man bash
和man sh
了解有关不同 shell 的更多详细信息。
相关问题: