Ansible 사용자 모듈은 sudo 구성을 제거합니다. 왜?

Ansible 사용자 모듈은 sudo 구성을 제거합니다. 왜?

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사용자는 해당 그룹에서 제거됩니다.

관련 정보