以非 root 用户身份在 UserData 中运行命令

p.m*_*aes 2 linux amazon-ec2 user-data

我正在尝试使用 EC2 UserData 脚本安装气流。我需要使用非 root 用户 (ec2-user) 运行一些命令。请参阅下面的脚本:

  UserData:
    Fn::Base64: !Sub |
      #!/bin/bash
      set -xe
      # Install GCC
      yum install -y gcc
      # Install Dependencies
      pip install boto3 awscli markupsafe six


      export AIRFLOW_GPL_UNIDECODE=yes
      export AIRFLOW_HOME=/home/ec2-user/airflow
      pip install apache-airflow[crypto,postgres]


      su - ec2-user
      whoami
      PATH=$PATH:/usr/local/bin
      airflow initdb
Run Code Online (Sandbox Code Playgroud)

我刚刚调查了日志,似乎该命令su - ec2-user不起作用并且whoami正在返回root user.

+ su - ec2-user
Last login: Sat Aug 10 15:59:37 UTC 2019 from ip-10-1-13-234.us-west-2.compute.internal on pts/0
+ whoami
root
Run Code Online (Sandbox Code Playgroud)

Vik*_*yol 14

您可以使用sudo -u以非 root 用户身份运行单个命令。

sudo -u ec2-user whoami

如果您想运行多个命令,也可以启动子 shell。

sudo -u ec2-user bash -c 'whoami;PATH=$PATH:/usr/local/bin;airflow initdb'


小智 10

对于正在搜索如何以 ec2-user 身份运行用户数据的人,我发现的最简单的解决方案是使用sudo -u-i选项:

#!/bin/bash
sudo -u ec2-user -i <<'EOF'

cmd1
cmd2
cmd3

EOF
Run Code Online (Sandbox Code Playgroud)