为什么我不能运行“ su”?(该怎么办?)


33

每当我尝试发布时,su我都会得到:

$ su  
Password:  
su: Sorry

不用说,我输入的是正确的admin密码sudo。我想要的是不必sudo每次都输入。

Answers:


34

在MacOS X中,默认情况下禁用了root用户,因此su将无法使用。正如其他人所述,最好使用sudo

如果必须启用root用户,请参阅Apple的技术说明:在Mac OS X中启用和使用“ root”用户


13
sudo su仍然有效,因此它并不是真正的禁用。它没有密码。
假名称

@FakeName这是最搞笑的后门!如果可以运行sudo su,那么禁用的目的是su什么?
科洛布峡谷

3
@KolobCanyon-并不是真正要“禁用su”,而是防止root登录。通过禁止以身份登录root,您可以避免一堆可能的安全问题。不让谁可以sudosu是种愚蠢。基本上,su只需更改当前的用户ID,然后执行命令(如果未指定,则为shell)。如果用户ID已经为0(root),例如使用时sudo,则没有任何事情要做,因此它仅执行shell。这样做可以得到类似的效果sudo bash
假名称

1
@FakeName仍然感到困惑。以root用户身份登录和运行'sudo su'有什么区别?实际上不是同一水平吗?
Kolob峡谷

2
@KolobCanyon-不 基本上,如果禁用login,则意味着如果登录过程中存在漏洞,则黑客无法使用该漏洞直接获取root权限。基本上,它将所需的root用户损害从“登录损害”转移到“用户帐户+ privesc的登录损害”。基本上,这是做为纵深防御的事情。
假名称

14

您有两个选择。首先是使用sudo -s-这将为您提供超级用户访问权限,但您仍然可以保持“自己”状态(可以这么说),因此诸如此类的~内容仍将成为您的主目录。或者,您可以使用sudo su,它为您提供一个外壳程序,作为Mac的实际root用户。


5
Apple Way(tm)sudo用于运行需要提升特权的命令,而不是切换到root shell并从中进行工作。
伊恩·C(

3
@Ian C.-不,那实际上是unix的方式。苹果公司只是使用它,因为它也是基于* nix的。
假名称

@假名:Apple竭尽全力,从不向用户谈论根外壳或向用户公开根外壳。您可以说他们将sudo精神推向了极致。但无论如何:语义。在OS X中不要使用root壳
伊恩C.

1
@Ian C-苹果并没有比* nix设计师做更多的事情,苹果只是没有太多谈论它。在这两种情况下,只有在诸如linux之类的情况下,它们才会告诉您如何轻松使用它。如果这使它得到更广泛的使用,则并不表示基础架构有所不同。
假名称

1

例如,如果您需要移动文件或通过CLI使用git,那么在这种情况下,最好的解决方案是使用sudo -s命令。执行完该命令后,您不必反复输入密码。


1

我认为您不能以“普通”用户的身份进行此操作...

如果还有另一个具有管理员权限的用户帐户,则必须使用该帐户

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now

1

现代解决方案: sudo -u

要用作其他用途,请使用sudo -u

例如,要运行诸如nano之类的文本编辑器

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 用户

rootUnix相关操作系统中的用户绝对有权执行任何操作。

Apple已选择root在macOS中禁用该帐户,以避免安全漏洞利用并保护您免遭脚掌攻击。苹果公司提出了管理员用户帐户的想法,该用户帐户具有许多权限,比标准用户帐户具有更多权限,但没有绝对权限root。请参阅此Apple支持说明以进行讨论。

如果需要,可以root在macOS中启用该用户,然后切换到该用户。这是强烈劝阻。我只会走这条路,只是作为一个绝望的最后手段。


有关在macOS上postgres运行Postgres数据库系统的用户的上下文中对此问题的讨论,请在姊妹站点DBA Stack Exchange上查看此问题

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.