运行 以非根用户身份在 UserData 中执行命令
Running command in UserData as a not-root user
我正在尝试使用 EC2 UserData 脚本安装气流。我需要使用非根用户 (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
我刚刚调查了日志,似乎命令 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
您可以使用 sudo -u 以 运行 作为非根用户的单个命令。
sudo -u ec2-user whoami
如果你想运行多个命令,你也可以启动一个子shell。
sudo -u ec2-user bash -c 'whoami;PATH=$PATH:/usr/local/bin;airflow initdb'
对于正在搜索如何以 ec2-user 身份 运行 user-data 的人,我找到的最简单的解决方案是使用 sudo -u
和-i
选项:
#!/bin/bash
sudo -u ec2-user -i <<'EOF'
cmd1
cmd2
cmd3
EOF
我正在尝试使用 EC2 UserData 脚本安装气流。我需要使用非根用户 (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
我刚刚调查了日志,似乎命令 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
您可以使用 sudo -u 以 运行 作为非根用户的单个命令。
sudo -u ec2-user whoami
如果你想运行多个命令,你也可以启动一个子shell。
sudo -u ec2-user bash -c 'whoami;PATH=$PATH:/usr/local/bin;airflow initdb'
对于正在搜索如何以 ec2-user 身份 运行 user-data 的人,我找到的最简单的解决方案是使用 sudo -u
和-i
选项:
#!/bin/bash
sudo -u ec2-user -i <<'EOF'
cmd1
cmd2
cmd3
EOF