如何在nodejs中创建没有sudo-limited访问权限的文件

时间:2013-03-15 22:12:45

标签: linux node.js file-permissions sudo

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

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

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

1 个答案:

答案 0 :(得分:3)

有几种比su​​do更好的方法。

  1. 使用反向代理侦听端口80将流量转发到您的节点进程,该进程以非root身份运行并侦听端口> 1024.这是绝大多数或现实世界部署的运行方式,并且有充分的理由。有关支持参数,请参阅Why should one use a http server in front of a framework web server?my answer here
  2. 以root用户身份启动节点进程,以root身份绑定端口80,然后使用process.setuid将权限删除给非root用户。 Here's an article on this technique
  3. 请注意,sudo的目的主要是为登录并运行交互式shell以运行特定命令的用户。它在运营网络服务方面确实没有任何作用。

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

      除非我使用sudo

    启动我的程序,否则偶尔它不会让我听80端口

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