【问题标题】:sudo command not working in startup-scriptsudo 命令在启动脚本中不起作用
【发布时间】:2015-10-01 17:04:19
【问题描述】:

这是我的计算引擎实例的启动脚本的一部分

# Configure supervisor to run the node app.
cat >/etc/supervisor/conf.d/node-app.conf << EOF
[program:nodeapp]
directory=/opt/app
command=sudo node app.js
autostart=true
autorestart=true
user=nodeapp
environment=HOME="/home/nodeapp",USER="nodeapp",NODE_ENV="production"
stdout_logfile=syslog
stderr_logfile=syslog
EOF

如果你注意到这条线

command=sudo node app.js

原来只是

command=node app.js

但由于我的应用程序正在侦听端口 80,因此我对其进行了修改,以便获得 root 访问权限。当我的虚拟机启动时,它会执行脚本,但我无法访问我的网站,当我 SSH 进入实例并键入时

sudo node app.js

但是,一切正常。启动脚本中不能有 sudo 命令?

【问题讨论】:

  • 为什么supervisord 没有以root 身份运行?它以什么用户身份运行?与您成功运行sudo node app.js 时使用的用户相同吗?您的sudo 配置是否设置了requiretty 选项?
  • 如何以 root 身份运行 supervisord?什么是requiretty选项?这是“在谷歌计算引擎上部署 nodejs 应用程序”教程中的代码。完全没看懂。
  • 我应该添加整个启动脚本吗?
  • user=nodeapp更改为user=root就足够了,它将以root身份启动,因为supervisord已经以root身份运行。保留command=node app.js 不带sudo
  • @alvits 完美。谢谢

标签: linux node.js debian google-compute-engine sudo


【解决方案1】:

首先你必须grant sudo accessnodeapp 用户。

【讨论】:

    【解决方案2】:

    如果你以root 运行Node(这是使用sudo 的效果),你不妨设置user=root(或完全删除该设置)并保留原来的command

    【讨论】:

      猜你喜欢
      • 2019-07-07
      • 2017-05-02
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2014-05-23
      • 2013-10-04
      • 1970-01-01
      • 2023-02-05
      相关资源
      最近更新 更多