以 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的主要内容,如果未能解决你的问题,请参考以下文章

以root身份在脚本中间运行命令[重复]

在端口 80 上运行节点 js,而不以 root 身份运行

以root身份运行python脚本

确保脚本以root用户身份运行

Cron,以root身份执行bash脚本,但一部分(Python脚本)以用户身份执行

如何以用户而不是 root 用户身份运行 cron 作业 [关闭]