【问题标题】:Can I run Node.JS with low privileges?我可以以低权限运行 Node.JS 吗?
【发布时间】:2012-01-08 21:01:20
【问题描述】:

我想以低权限用户运行节点,可以吗?我需要使用框架 Express.js

【问题讨论】:

  • 定义“低权限用户”。
  • 我不想用 ROOT 权限调整 node.js。
  • 是什么让你觉得你必须这样做?我从来不需要这样做。
  • 你只需要root权限就可以在80端口运行节点。
  • @pono: 1024以下的所有端口都需要root权限

标签: node.js


【解决方案1】:

是的。有很多解决方案可以做到这一点,具体取决于您的具体需求。

如果你想在 80 端口上运行 node,你可以使用 nginx(还不能与 WebSockets 一起使用)或haproxy。但也许最快最脏的方法是使用 iptables 将端口 80 重定向到您选择的端口:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003
sudo iptables -t nat -L

当您满意时,保存配置并确保 iptables 在启动时启动

sudo service iptables save
sudo chkconfig iptables on

要以非 root 用户身份自动启动您的 nodejs 服务,并在失败时重新启动它,您可以使用 upstart 和这样的脚本:

#!upstart
description "nodeapp"
author      "you"

start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

script
   export HOME="/home/user/"
   exec sudo -u user /usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log
end script

如果您使用的是 Amazon EC2 安装,或者您收到一条显示 sudo: sorry, you must have a tty to run sudo 的错误消息,那么您可以将您的 exec 命令替换为:

#!upstart
description "nodeapp"
author      "you"

start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

script
   export HOME="/home/user/"
   #amazon EC2 doesn’t allow sudo from script! so use su --session-command
   exec su --session-command="/usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log" user &
end script

而且,您并没有问这个问题,但要让它永远运行,请查看 monit!这里是a useful guide to setting up node.js with upstart and monit

【讨论】:

  • 设置 HOME 在这里实际上做了什么?
  • 根据您使用的节点的特定版本、您的目录结构以及节点是由 root 还是当前用户安装的,答案会有所不同:)运行它的节点,它可能会被完全忽略(请注意,我在示例中错误地放置了/home/user/nodeapp,当它应该匹配/home/user/ 的app.js 位置时,即require() 的位置对于模块)
  • 在 EC2 上,我的 Ubuntu (12.04) 没有用于 su--session-command 开关。我跑了exec su - $USER -c '/usr/bin/node /path/to/node/app.js 2>&1 >> /path/to/node/app.log'
  • 这是另一种选择,也是一个很好的选择;我很惊讶你甚至需要 Ubuntu
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2016-11-19
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2015-01-14
相关资源
最近更新 更多