权限为nodejs设置

我有几个应用程序在我的服务器上运行; 他们是build立在meteor.js所以他们是nodejs进程,我运行它们永远使用npm模块;

我现在正在使用同一个用户,他们所有的网站目录拥有所有的网站目录永远启动, 现在,这将成为一个生产服务器,我想更好地了解这可能导致的安全问题; 有没有一些通用的安全规则可以遵循来启动nodejs进程? 我目前的做法可能危险吗?

假设您的应用程序不需要对应用程序数据的写入访问权限(它实际上不应该),我们执行以下操作:

我们将用户分成两个类: node-<app>-runtimenode-<app>-data<app>是应用程序名称。 它们都是组node-<app>一部分 – node-<app> 。 那些不是我们用于那些恶作剧的名字。

我们做以下工作:

1)为了构build应用程序,我们总是在单独的机器上构build,然后有一个npm dist脚本,它只将运行应用程序所需的文件放到/dist目录中,并将tar目录的副本发送到我们的部署服务器。 这样做的好处是双重的 – 我们确切知道部署中会发生什么,我们可以确保node_modules.git目录和其他数据中的任何dev-deps不会被添加到生产机器中。 这也意味着,当GitHub / Npm /等。 它不会中断自动缩放等。我们的部署服务器只提供预制的tarball。

2)我们使用我们的configurationpipe理系统在一个标准化的位置创build一个日志目录,这个目录可以通过node-<app>-runtime以权限640写入。path通过一个标准的环境variables提供给应用程序。 我们的日志处理守护进程会自动select这些守护进程并将它们发送到远程服务器。

3)我们的部署系统将应用程序文件放置在特定的位置,并将它们设置为拥有权限为640的node-<app>-data 。path由标准环境variables提供给应用程序。

我唯一的build议是确保你正在设置NODE_ENV=production 。 许多节点模块使用这种约定来closuresdebugging符号,或者提高性能( express出来)。