由于Ubuntu默认情况下会禁用root帐户,为什么不同时禁用root shell访问?


12

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

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


7
这样就可以吗sudo -i
AlexP

12
“禁用根帐户”有点宽松的描述:真正禁用的是根帐户的基于密码的身份验证
steeldriver

1
@AlexP确实是我刚刚测试过的,sudo -i不能将root设置为/ usr / sbin / nologin。
loongyh

Answers:


19

如果真是这样,您一次只能运行sudo一个命令,而无法启动根外壳程序。在许多情况下,例如,如果您计划以root用户身份连续运行多个命令,则root shell很方便。

具体来说,您无法运行sudo -i,如AlexP所述。来自man sudo

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

7
sudo /bin/bash这样做吗?
Federico Poloni

5
@FedericoPoloni会更像sudo -s我想的那样(root shell,而不是root 登录 shell)。不过,这是一个好点-实际上sudo -s,即使root的外壳在,它似乎也可以工作/usr/sbin/nologin
-steeldriver

1
您可以禁用-i-s/bin/bash,等的只是允许命令的白名单,请参阅sudoers文件的文档。这是如此精细,以至于例如可以允许用户以/etc/init.d/someservice restartroot 用户身份运行而不允许他们运行/etc/init.d/someservice stop。但是ubuntu的默认设置是不设置密码,root并允许管理员用户使用sudo进行所有操作。可能的原因是a)多个管理员用户和b)管理员用户无需记住root帐户的第二个密码。
allo

8

除了Alberto Santini的sudo答案外,还有另一个(好得多)答案。如果root用户的shell设置为非shell,则无法引导单个用户。可以恢复sulogin非现存的shell或完全损坏的shell,但是如果shell看起来是有效的shell但实际上不是shell,它将无法正常工作。

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

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.