我应该始终将 root shell 设置为 /usr/bin/false 吗?

我应该始终将 root shell 设置为 /usr/bin/false 吗?

为了防止滥用 root 帐户(在我的 macOS 上,单用户)计算机,我是否应该始终将 shell 设置root/usr/bin/false(或/sbin/nologin)?

例如,我应该始终:

sudo /usr/bin/dscl . -create /Users/root UserShell /usr/bin/false 

或者是否存在不这样做的常见原因(除了明显且可以避免的)?

答案1

不,你不应该,因为如果你需要root无法使用该帐户(有时会出现这种情况,甚至在 Mac 上)进行故障排除或恢复。

应该但是,请设置 root 密码:

$ sudo passwd root

答案2

如果您按照概述设置 root shell,则无法登录或su -成为 root。然而,您仍然使用sudoor Even su(不带减号)。

禁用 root 登录通常是一个很好的安全措施。但是,您应该确保在系统出现故障时可以通过其他方式访问计算机。当系统行为异常时,根登录可能仍然有效,而普通帐户则不能(也就是说,例如,为什么在大多数 Unix 系统上,根主目录不在普通用户主目录中,而是在系统驱动器上)。

您可能仍然可以启动到单用户模式,但对于当前的 MacOS 版本,我不能 100% 确定这一点,您应该检查一下。如果即使使用无登录 shell 仍然可以做到这一点,那么这就是您摆脱麻烦的方法,您可以安全地禁用 root 登录。

如果没有,那就成了你想死哪一种死法的问题了。自己决定更有可能发生的情况 - 有人滥用您的 root 帐户或您的系统出现故障以至于您需要该 root 帐户。

答案3

日常运营

您不需要root启用该帐户即可在 macOS 上执行日常操作。即使没有启用 root 帐户及其 shell 设置,/usr/bin/false您仍然可以毫无问题地使用sudo(以及rootshell )。sudo -s

单用户模式

单用户模式使用 /private/etc/passwd 进行登录验证,而不是 Open Directory:

pse@Mithos:~$ grep ^root: /etc/passwd 
root:*:0:0:System Administrator:/var/root:/bin/sh

pse@Mithos:~$ sudo dscl . -read /Users/root UserShell
UserShell: /usr/bin/false

所以对单用户模式不会产生负面影响。

相关内容