0

所以我正在运行一个我已经工作了一段时间的项目。我正在使用 sudo node 运行它,我首先想知道这是否是个好主意?我一直这样做的原因是因为偶尔它不会让我在端口 80 上监听,除非我使用 sudo 启动我的程序。

无论如何,当我使用 fs.appendFileSync 或任何文件创建时,它将限制对 sudo 的文件访问(我只能使用 sudo rm ... 删除操作系统中的文件,我希望能够从任何文件中删除和修改这些文件其他系统用户。

那么我应该使用 sudo 来启动节点吗?以及如何在 sudo 中创建文件,然后允许其他用户删除它们(例如我自己使用 ui)?

4

1 回答 1

3

有几种比 sudo 更好的方法。

  1. 使用在端口 80 上侦听的反向代理将流量转发到您的节点进程,该进程以非 root 身份运行并侦听大于 1024 的端口。这是绝大多数或现实世界部署的运行方式,并且有充分的理由。请参阅为什么要在框架 Web 服务器前使用 http 服务器?以及我在这里的支持论点的回答。
  2. 以 root 身份启动您的节点进程,以 root 身份绑定端口 80,然后使用process.setuid将权限删除给非 root 用户。这是一篇关于这种技术的文章

请注意,目的sudo主要是让用户登录并运行交互式 shell 以运行特定命令。它在运营网络服务方面确实没有任何作用。

在权限方面,您的节点进程应以非 root 用户身份运行,并根据需要在特定目录中具有适当的文件系统写入权限,以便在其应用程序操作中写入文件。

有时它不会让我在端口 80 上监听,除非我使用 sudo 启动我的程序

不是“偶尔”,总是。Unix 进程必须是 root 才能绑定到 < 1024 的网络端口。

于 2013-03-15T22:45:15.327 回答