我已经用Amazon Linux 2 Image创建了一个EC2实例。访问实例只允许通过会话管理器和不通过SSH.
我有以下用户:
- ec2-user(默认创建)
- ssm-user(默认创建)
- root(默认创建)
- myrootec2-user(我从Terraform创建的自定义根用户,并分配了密码)
我已经尝试禁用root用户,因为我只想使用myrootec2-user用户执行管理员操作。
为此,我执行了以下步骤:
sudo vim /etc/passwd
然后,我改变了:
root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin
但是,根据我分配给sudo命令的参数,我可以访问或不访问:
sudo su - # Error: This account is currently not available.
sudo -s # OK: Log in to the root user without errors
为什么我可以用第二个命令登录?您是否建议禁用root用户,或者我将来会有问题吗?你有什么其他的建议,比如给root分配一个密码?
我已经尝试禁用root用户,因为我只想使用myrootec2-user用户执行管理员操作。
你不能"禁用"root用户。您可以禁用密码登录并将根shell设置为/sbin/nologin
,但是您仍然需要sudo
来运行管理命令。
如果你认为你可以在不运行管理命令的情况下逃脱,那么,这听起来是个有趣的挑战。使用正确的不可变基础设施方法,您可能能够做到这一点。除了您的东西之外,您将删除所有用户对sudo
的访问权限,并且root
将在运行时接近不可访问(某些系统进程仍将使用它)。
但是您的系统仍然需要一个root用户。这对系统功能至关重要。