以 root 身份运行 Node.js 脚本的 Elastic beanstalk
Posted
技术标签:
【中文标题】以 root 身份运行 Node.js 脚本的 Elastic beanstalk【英文标题】:Elastic beanstalk running Node.js script as root 【发布时间】:2016-06-19 16:51:59 【问题描述】:我有一个 node.js 脚本/应用程序,我试图在 AWS Elastic beanstalk node.js 服务上运行。
使用 sudo 启动脚本后,该脚本在本地计算机上运行良好。因此,在将其移至 AWS 弹性 beanstalk 环境时,它似乎没有以 root 权限运行。
有没有办法设置 node.js 脚本以在弹性 beanstalk 服务器上使用 sudo 或 root 权限启动?
【问题讨论】:
真的有必要吗?使用 sudo 启动? 我同意安德烈。不要以 sudo 身份运行您的应用程序。应用程序在做什么?我投了反对票,因为这是不好的做法。 @Clarkie - 我是 node.js 的新手,正在尝试利用一些已经可用的代码,所以不知道为什么它需要以 root 身份运行。我将重新检查代码并尝试了解是否有更好的方法。知道这是不好的做法是很好的反馈。如果您还可以详细说明为什么您认为这是不好的做法,那就太好了? root 用户(或 sudo)拥有对服务器的完全控制权。通过以 root 身份运行您的应用程序,您可以完全控制它;想象一个非常讨厌的人控制了你的应用程序。例如。您的应用程序允许上传文件,并且有人上传了一些带有一些讨厌的代码的 js 文件...... 【参考方案1】:这是一个非常糟糕的做法,所以我从未尝试过这样做。
如果您没有其他解决方案,请尝试更改 package.json 中的启动脚本,如下所示:
"scripts":
"start": "sudo node index.js"
您也应该将 nodejs 用户添加为 sudo。在.ebextensions 文件夹(位于应用根目录)中创建一个文件 rootaccess.config,内容如下:
container_commands:
01_enable_rootaccess:
command: echo Defaults:root \!requiretty >> /etc/sudoers
请记住,您应该使用空格而不是制表符来缩进这个 .config 文件
【讨论】:
非常感谢,经过这么多小时终于找到了这个......以上是关于以 root 身份运行 Node.js 脚本的 Elastic beanstalk的主要内容,如果未能解决你的问题,请参考以下文章