我试图通过将以下行添加到我的/ etc / sudoers文件的底部,来防止以www用户身份运行节点的命令提示input密码:
gituser ALL=(ALL) NOPASSWD: /usr/bin/sudo -u web-user NODE_ENV=production /path/to/node app.js
我也尝试把这个命令放在一个shell脚本中,然后运行它,但没有任何的喜悦:
gituser ALL=(root) NOPASSWD: /usr/local/sbin/startnode
有没有人有什么我在做什么错误的想法?
最终,我将作为一个暴发户服务运行,所以命令将是“sudo服务runnode停止/启动”,并从一个git钩子触发,但我想原则将是相同的。
FYI,sudoers文件的全部内容:
Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Defaults root ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL %sudo ALL=(ALL) ALL gituser ALL=(ALL) NOPASSWD: /usr/bin/sudo -u web-user NODE_ENV=production /path/to/node app.js gituser ALL=(root) NOPASSWD: /usr/local/sbin/startnode
感谢大家的答案。 在这篇文章的帮助下,我设法最终完成了以下工作:
将这行添加到sudoers文件(使用visudo)。
gituser ALL=(web-user) NOPASSWD: /usr/local/sbin/startnode
文件/ usr / local / sbin / startnode的内容更改为以下内容:
#!/bin/bash cd /var/www/api.vitdsunshine.com/sun-express ########## BEFORE # sudo -u web-user NODE_ENV=production /path/to/node app.js ########## AFTER NODE_ENV=production /path/to/node app.js
这将现在工作:
$ sudo -u web-user startnode
将这行添加到sudoers文件(使用visudo)。
gituser ALL=(web-user) NOPASSWD: /path/to/node
尝试将envvariables设置为命令的一部分会导致失败。
$ sudo -u web-user NODE_ENV=production /path/to/node app.js sudo: sorry, you are not allowed to set the following environment variables: NODE_ENV
解决scheme:您必须在Web用户的.bashrc文件或/ etc / environment中设置此env var。
$ sudo -u web-user /path/to/node app.js env production Express server listening on port 9000