为了防止滥用 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。然而,您仍然使用sudo
or Even su
(不带减号)。
禁用 root 登录通常是一个很好的安全措施。但是,您应该确保在系统出现故障时可以通过其他方式访问计算机。当系统行为异常时,根登录可能仍然有效,而普通帐户则不能(也就是说,例如,为什么在大多数 Unix 系统上,根主目录不在普通用户主目录中,而是在系统驱动器上)。
您可能仍然可以启动到单用户模式,但对于当前的 MacOS 版本,我不能 100% 确定这一点,您应该检查一下。如果即使使用无登录 shell 仍然可以做到这一点,那么这就是您摆脱麻烦的方法,您可以安全地禁用 root 登录。
如果没有,那就成了你想死哪一种死法的问题了。自己决定更有可能发生的情况 - 有人滥用您的 root 帐户或您的系统出现故障以至于您需要该 root 帐户。
答案3
日常运营
您不需要root
启用该帐户即可在 macOS 上执行日常操作。即使没有启用 root 帐户及其 shell 设置,/usr/bin/false
您仍然可以毫无问题地使用sudo
(以及root
shell )。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
所以对单用户模式不会产生负面影响。