AWS 文档建议我不要以 root 身份访问服务器,而是创建一个新用户,并使用此标志在不使用密码的情况下执行此操作:
--disabled-password
我现在需要运行 sudo 命令来安装 nginx。
我如何运行 sudo 命令,它一直要求输入密码,但密码并未设置。每次我需要使用 sudo 命令时,我是否需要以 root 用户身份登录?
如果我允许新用户帐户具有 sudo 访问权限 - 出于安全原因,这是否不会消除从根帐户中分离帐户的全部意义?
答案1
该文件/etc/sudoers
列出了具有 root 访问权限的所有用户。您可能在文件本身或目录中的任何文件中看到类似这样的一行/etc/sudoers.d
:
username ALL=(ALL) ALL
而不是ALL
,可能会有一些限制,例如最后一个ALL
替换为/usr/bin/apt-get
或类似内容,以便您只能通过 sudo 执行此命令。该文件本身有很好的文档记录。
为了让用户无需密码即可执行 sudo 命令,只需NOPASSWD
在行中添加:
username ALL=(ALL) NOPASSWD: ALL
是的,这比仅root
通过 ssh 访问用户更安全。通常,永远不要以 root 身份登录,也不要通过 ssh 使用密码登录,而是使用公钥身份验证。有关更多信息,请查看此答案:为什么通过 SSH 进行 root 登录如此糟糕以至于每个人都建议禁用它?
答案2
无论您使用哪种 Linux 发行版,Aws 都会向默认用户提供 sudo 访问权限。例如,Ubuntu 实例的默认用户为 ubuntu,Amazon Linux 发行版的默认用户为 ec2-user,Centos/Redhat 的默认用户为 root/ec2_user
您所需要的只是用于安装的正确命令。以下是以默认用户身份安装的命令。
- 乌班图 -->>
sudo apt-get install nginx
- 亚马逊 Linux -->>
sudo yum install -y nginx
- Centos/Redhat -->>
sudo yum install -y nginx
您可以使用命令添加新用户useradd
。这很简单,但是您需要为该用户生成 RSA 密钥对并将其添加到.ssh/authorized_keys
远程主机上用户主目录中的文件中。
对于 sudo 权限,您需要添加您的用户/etc/sudoers
文件条目,如下所示。
username ALL=(ALL) ALL
但要编辑/etc/sudoers
文件,您需要是默认用户或 root 用户。您应该这样做。以默认用户身份登录并使用以下命令编辑文件sudo nano /etc/sudoers