我应该如何创建一个可以用来安全运行网络应用程序等的用户?

我应该如何创建一个可以用来安全运行网络应用程序等的用户?

我正在通过 ssh 执行此操作。

我想创建一个用户:

  • 无法通过ssh访问

  • 可以被冒充su

  • 没有密码(这是一个好习惯吗?)

  • 可以运行 Web 应用程序(特别是使用 pm2 (nodejs))

这就是我们在工作中的做法——我通过 ssh(pem 密钥)访问服务器,然后 su 到用户nodejs并运行应用程序。我在这里阅读了一些答案,但它们通常采用“我创建了一个用户但它不起作用,出了什么问题”的形式

我创建了一个用户,adduser nodejs --system --group但它的密码我不知道。也许我只需要在该命令中添加一些内容。

操作系统是Mint/Ubuntu。

答案1

默认情况下,大多数 Linux 发行版不会为新用户设置密码,而是在禁用密码身份验证的情况下创建密码。该帐户不会从外部显示为已禁用 - 您仍然会收到提示。但没有密码是行不通的。

如果您设置了密码,知道该密码的人将能够通过 ssh 访问该密码。但是,如果您的系统sudo安装了该软件包并且您的帐户位于该wheel组中,或者 sudo 已被专门配置为允许您的帐户切换到该用户,则您不需要设置密码即可切换到该帐户。

假设 sudo 配置为允许您更改为该用户并运行任何命令,

sudo -u nodejs -H -s -i

将提示您输入您的凭据(我认为是您的密码),成功输入后,将使用目标用户的登录 shell 登录到帐户。(-i 表示使 shell 成为目标用户的登录 shell。)

如果您的帐户未配置为允许您使用 sudo 切换到该用户并运行任何命令,则如何配置它是一个单独且更大的问题。但在问这个问题之前,请阅读 sudo 和 sudoers 联机帮助页 ( man sudo sudoers)

相关内容