Answers:
在MacOS X中,默认情况下禁用了root用户,因此su
将无法使用。正如其他人所述,最好使用sudo
。
如果必须启用root用户,请参阅Apple的技术说明:在Mac OS X中启用和使用“ root”用户。
sudo su
,那么禁用的目的是su
什么?
su
”,而是防止root登录。通过禁止以身份登录root
,您可以避免一堆可能的安全问题。不让谁可以sudo
来su
是种愚蠢。基本上,su
只需更改当前的用户ID,然后执行命令(如果未指定,则为shell)。如果用户ID已经为0(root),例如使用时sudo
,则没有任何事情要做,因此它仅执行shell。这样做可以得到类似的效果sudo bash
。
您有两个选择。首先是使用sudo -s
-这将为您提供超级用户访问权限,但您仍然可以保持“自己”状态(可以这么说),因此诸如此类的~
内容仍将成为您的主目录。或者,您可以使用sudo su
,它为您提供一个外壳程序,作为Mac的实际root用户。
sudo
用于运行需要提升特权的命令,而不是切换到root shell并从中进行工作。
sudo
精神推向了极致。但无论如何:语义。在OS X中不要使用root壳
例如,如果您需要移动文件或通过CLI使用git,那么在这种情况下,最好的解决方案是使用sudo -s
命令。执行完该命令后,您不必反复输入密码。
sudo -u
要用作其他用途,请使用sudo -u
。
sudo -u someuser nano
…,然后在出现提示时输入Mac管理员用户密码。此时,正在调用的是您的Mac管理员用户sudo
,而不是该someuser
用户,因此您无需输入someuser
密码。
sudo
表示使用超级用户权限运行某些内容。-u
表示“以该指定用户身份运行指定命令”。someuser
应该用您想要的用户名替换。要模拟作为特定用户的初始登录(包括运行其启动脚本),请使用-I
。
sudo -u someuser -i nano
这nano
将以用户身份运行应用程序,someuser
但仅在为该用户运行了启动脚本之后。
如果我们选择不指定要运行的命令或应用程序,则会获得一个以该用户身份运行的交互式外壳程序。
sudo -u someuser -i
sudo su someuser
另一种方法是将su
命令与结合使用sudo
。该su
命令的意思是“切换用户”。
sudo su someuser
或者,要包括运行用户的启动脚本,请添加连字符。
sudo su - someuser
root
用户root
Unix相关操作系统中的用户绝对有权执行任何操作。
Apple已选择root
在macOS中禁用该帐户,以避免安全漏洞利用并保护您免遭脚掌攻击。苹果公司提出了管理员用户帐户的想法,该用户帐户具有许多权限,比标准用户帐户具有更多权限,但没有绝对权限root
。请参阅此Apple支持说明以进行讨论。
如果需要,可以root
在macOS中启用该用户,然后切换到该用户。这是强烈劝阻。我只会走这条路,只是作为一个绝望的最后手段。
有关在macOS上postgres
运行Postgres数据库系统的用户的上下文中对此问题的讨论,请在姊妹站点DBA Stack Exchange上查看此问题。
sudo su
仍然有效,因此它并不是真正的禁用。它没有密码。