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

loo*_*gyh 12 security command-line root

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

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

小智 19

如果是这种情况,您一次只能运行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.
Run Code Online (Sandbox Code Playgroud)

  • `sudo /bin/bash` 不能做到这一点吗? (7认同)
  • 我认为@FedericoPoloni 更像是`sudo -s`(一个root shell,但不是root *login* shell)。不过,这是一个好点——事实上,即使 root 的 shell 是 `/usr/sbin/nologin`,`sudo -s` 似乎也能工作 (5认同)

Jos*_*hua 8

除了 Alberto Santini 的 sudo 答案,还有另一个(更好的)答案。如果 root 的 shell 设置为非 shell,则引导单个用户不起作用。sulogin对于诸如非现存外壳或完全损坏的外壳之类的东西,可以进行恢复,但是如果外壳看起来是有效的外壳但实际上不是外壳,则它将不起作用。

您仍然sudo可以通过指定外壳来直接获取外壳,sudo因此它甚至不是很好的保护。