既然 Ubuntu 默认禁用 root 帐户,为什么不也禁用 root shell 访问呢?

既然 Ubuntu 默认禁用 root 帐户,为什么不也禁用 root shell 访问呢?

中的 root 帐户的当前默认/etc/passwd值为root:x:0:0:root:/root:/bin/bash

为什么不将其设置为root:x:0:0:root:/root:/usr/sbin/nologin

答案1

如果是这种情况,您一次只能运行一个命令sudo,但无法启动 root shell。root shell 在许多情况下都很方便,例如,如果您计划以 root 身份连续运行多个命令。

具体来说,您无法运行sudo -i,正如 AlexP 指出的那样。来自man sudo

-i, --login    Run the shell specified by the target user's password database entry as a login shell.

答案2

除了 Alberto Santini 的 sudo 答案之外,还有另一个(好得多的)答案。如果 root 的 shell 设置为非 shell 的某个值,则无法启动单个用户。sulogin对于不存在的 shell 或完全损坏的 shell 等情况,可以进行恢复,但如果 shell 看起来是有效的 shell,但实际上不是 shell,则无法恢复。

您仍然可以sudo通过指定shell来直接获取shell,sudo所以它甚至没有很好的保护。

相关内容