Amazon Linux 2システムは、パスワードなしでsudoを実行できるユーザーで構成されています。
# Add user
sudo groupadd -g 2002 one-username
sudo useradd -u 2002 -g 2002 -c "One Username Account" -s /bin/bash -m -d /home/one-username one-username
# Configure SSH for the user
mkdir -p /home/one-username/.ssh
cp -pr /home/ec2-user/.ssh/authorized_keys /home/one-username/.ssh/authorized_keys
chown -R one-username:one-username /home/one-username/.ssh
chmod 700 /home/one-username/.ssh
cat << 'EOF' > /etc/sudoers.d/one-username
User_Alias ONE_USERNAME = %one-username
ONE_USERNAME ALL=(ALL) NOPASSWD: ALL
EOF
chmod 400 /etc/sudoers.d/one-username
# disable login for one-username except through ssh keys
cat << 'EOF' >> /etc/ssh/sshd_config
Match User one-username
PasswordAuthentication no
AuthenticationMethods publickey
EOF
# restart sshd
systemctl restart sshd
この設定は、ansible Playbookが次のように同じユーザーをグループに追加したときに維持されます。
- name: Add user to different-groupname group
command: usermod -a -G different-groupname one-username
ただし、プレイブックの最初の2行が次の4行に変わると、同じユーザーは存在しないパスワードを入力するように求められず、sudoを実行できなくなります。
- name: Add user to different-groupname group
user:
name: one-username
group: different-groupname
なぜこれが起こるのですか?この問題が発生しないようにAnsibleのユーザーモジュールを再構成するにはどうすればよいですか?
注:どちらの場合も、different-groupname
同じ方法でグループが別々に作成され(one-username
グループに別々に追加され)、different-groupname
これが問題の原因ではありません。
答え1
短い答え
グループを追加してパラメータをusermod -a ...
追加するコマンドgroup
ユーザーモジュール「ユーザーのデフォルトグループの設定」。
詳細
ユーザーシングルユーザー名メイングループとして作成シングルユーザー名
sudo groupadd -g 2002 one-username
sudo useradd -u 2002 -g 2002 ... one-username
チームメンバーシングルユーザー名sudoを許可
User_Alias ONE_USERNAME = %one-username
ONE_USERNAME ALL=(ALL) NOPASSWD: ALL
アンサーブルモジュールユーザーユーザーのデフォルトグループの設定シングルユーザー名到着別のグループ名。
user:
name: one-username
group: different-groupname
グループのメンバーである可能性が高いです。別のグループ名sudoは許可されていません。
解決策
モジュールパラメータgroups
の代わりに使用group
ユーザー。変える
user:
name: one-username
group: different-groupname
使用
user:
name: one-username
groups:
- different-groupname
(未検証)
さらに、append
ユーザモジュールのキーワードはユーザのグループセットに影響を与える。追加すると、ユーザーのグループリストに追加さappend: yes
れます。different-groupname
user:
name: one-username
append: yes
groups:
- different-groupname
デフォルトappend
では、no
ユーザーグループはキーワードとして宣言されたグループセットに設定されますgroups
。ユーザーがリストにない他のグループに属している場合、groups
ユーザーはそのグループから削除されます。