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 플레이북이 다음과 같이 동일한 사용자를 그룹에 추가할 때 유지됩니다.
- name: Add user to different-groupname group
command: usermod -a -G different-groupname one-username
그러나 플레이북의 처음 두 줄이 다음 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
사용자는 해당 그룹에서 제거됩니다.