ElasticBeanstalk – 将ec2用户添加到另一个组

我有一个cron作业需要在我的EC2实例的ec2-user下运行,它需要能够写入我的web应用程序的标准日志文件。 但是,日志文件由webapp拥有(按照正常情况)。

我已成功更改日志文件的权限,以便所有者和组webapp:webapp都可以访问它们。 但是我遇到麻烦的地方是当我尝试添加ec2-userwebapp组。

我可以用sudo usermod -a -G webapp ec2-user在SSH中做到这一点,但是当我试图通过EB 容器命令添加这个命令时 ,我得到一个错误,说you must have a tty to run sudo 。 没有sudo运行命令给我/bin/sh: usermod: command not found

任何人都知道可以通过Elastic Beanstalk部署configuration将ec2-user添加到webapp组。

在使用sudo执行任何命令之前,您需要从container_command运行此命令:

 echo Defaults:root \!requiretty >> /etc/sudoers 

在上下文中(在.ebextensions / yourconf.config中)

 container_commands: 001-enableroot: command: echo Defaults:root \!requiretty >> /etc/sudoers #disables error related to needing a tty for sudo, allows running without cli 

不知道有关sudoers文件的问题,但通常将用户添加到组(比手动执行命令更简单)的方法是使用.ebextensions文件的users部分。 例如,在.ebextensions/something.config

 users: ec2-user: groups: - webapp 

你不应该使用sudo,部署脚本是由root运行的。

此外,这是一个服务器命令,在命令部分而不是容器命令部分。

 commands: 01_set_user_role: command: "usermod -a -G webapp ec2-user"