Operating System(OS)/Linux

[Ansible] 애드혹(Ad-Hoc) 명령 시 관리호스트 "sudo: 암호가 필요합니다" 오류 해결

9rrrr-m 2024. 11. 8. 08:25

 
 
 
Ansible에서 Ad-Hoc(애드혹) 명령 시 관리 호스트에서 아래와 같이, 간단한 명령어를 쉘 모듈을 이용하여 처리하는 명령도 수행하지 못하는 오류가 발생하여 해결 방법을 찾아보았습니다.

 
 
처음에는 "sudo: 암호가 필요합니다"라는 에러 메세지를 보고 ssh public key 배포가 안되어 일어난 현상인가 싶어 확인해 보았는데, 정상적으로 키는 배포되어 ssh 접속이 추가 인증 없이 가능한 상황이었습니다.

 
 
ansible.cfg 파일에도 권한 상승에 관한 부분이 제대로 설정되어 있었습니다.

 
 
혹시 모를 servera에서 student 사용자의 권한을 확인하였습니다.
student 사용자는 wheel group에 속해있어 추가적인 권한 부여가 필요 없는 상황이었습니다.
(wheel group에 sudo 권한으로 수행가능한 명령어의 종류가 이미 ALL로 설정된 상태)

 
 
따라서 추가적인 권한 문제가 아니라고 판단하여 추가적인 방법을 검색한 결과 스택오버 플로우에서 해당 관리호스트에 python3가 설치되어있는지 확인하라는 글을 발견하여 설치를 확인하였습니다.

(기본적으로 설치가 되어있음 확인)
 
 
아무래도 로그에 명시된 sudo 라는 단어가 걸려 기본 ansible.cfg를 확인하려 했으나, /etc/ansible/ansible.cfg가 존재하지 않음을 확인, vi 편집기로 기본 설정을 해주었습니다.

 
 
Ad-Hoc 명령어 재 수행 → 여전히 권한 상승 불가

 
 
이대론 답답해서 안되겠다... 일단 쓰기라도 해야 할 것 같아 의심가는 부분을 확실시 하고자 --become-password=<패스워드 파일> 옵션을 추가하여 확인을 해보았습니다.

→ 정상적으로 shell 모듈을 통한 echo 명령어 수행 확인
 
 
범인은 become 권한 상승인데... ansible-navigator로 작업하면서 처음 만나는 케이스라 당황스럽네요. 혹시 ansible-navigator를 사용하기 위해 ansible-core를 별도 설치하지 않았는데 그 영향인가 싶어 ansible-core 패키지를 추가로 설치해주었습니다.

 
 
Ad-Hoc 명령어 재 수행 → 여전히 권한 상승 불가

 
 
아무래도 ansible-navigator에서는 root로 권한이 상승되기 때문에 play가 정상 실행되는 것 같은데, Ad-Hoc은 같은 사용자로 수행되어 생기는 문제로 의심.
servera에 접속하여 /etc/sudoers.d/student 파일에 아래 내용으로 신규 생성 (sudo password를 아얘 관리호스트 단에서 처리하도록)

 
 
Ad-Hoc 명령어 재 수행 → 정상 작동

 
 
정말 이것저것 해결하느라 다양하게 시도해봤지만 문제 원인을 파악하는데서 끝나는게 아니라 해결하는건 또 별개의 문제 같습니다 ㅎㅎ;;  약간 보안상 문제가 있지 않을까 싶어 /etc/sudoers.d/student를 가장 마지막에 시도한건데 우선은 이 방법을 사용해야 할 것 같습니다. 더 좋은 방법이 있다면 공유해주시면 감사하겠습니다!
 
 
 

728x90