所以我正在运行一个我已经工作了一段时间的项目。 我正在使用sudo节点运行它,我首先想知道这是否是一个好主意?我这样做的原因是因为除非我使用sudo启动我的程序,否则偶尔它不会让我听80端口。
无论如何,当我使用fs.appendFileSync或任何文件创建时,它会限制文件访问sudo(我只能使用sudo rm删除操作系统中的文件...,我希望能够删除和修改这些文件来自任何其他系统用户的文件。
我应该使用sudo来启动节点吗?如何在sudo中创建文件,然后允许其他用户删除它们(例如我自己使用ui)?
答案 0 :(得分:3)
有几种比sudo更好的方法。
process.setuid
将权限删除给非root用户。 Here's an article on this technique。请注意,sudo
的目的主要是为登录并运行交互式shell以运行特定命令的用户。它在运营网络服务方面确实没有任何作用。
在权限方面,您的节点进程应作为非root用户运行,并根据需要在特定目录中具有适当的文件系统写权限,以便在文件作为其应用程序操作的一部分进行写入。
除非我使用sudo 启动我的程序,否则偶尔它不会让我听80端口
总是不“偶尔”。 Unix进程必须是root才能绑定到网络端口< 1024。