🐈

root以外でユーザデータを実行する(Amazon Linux 2)

2022/02/11に公開

別ユーザで実行できるユーザデータ

#!/bin/bash
sudo -u ec2-user whoami

経緯

ユーザデータとは

EC2にユーザデータを入力しておくことで、初回起動時にコマンドを実行できます。
このときに実行を行うユーザはrootなので、sudoなどを入れなくても権限不足で実行できなくなるということはありません。(便利)

別ユーザで実行したい

ただし今回は、
ユーザごとにAWS CLI用の設定が入っている、
cron設定を各ユーザで行いたいなどの理由で、root以外のユーザで実行したくなりました。

失敗例

su ec2-user
whoami
# rootと出力される

suでec2-userになったあとにコマンドを実行したかったのですが、rootのままコマンドを実行することになりました。

成功例

sudo -u ec2-user whoami
# ec2-userと出力される

sudo コマンドにはこのユーザとして実行するというオプションがあり、そちらを使用したところ別ユーザとして実行することができました。
最後に確認の手順を載せておきます。

確認の手順

ユーザデータを入力して起動する

インスタンスに入って実行結果を確認する

sudo tail /var/log/cloud-init-output.log

Discussion