Ansible 사용자를 설정하기 위해 튜토리얼을 따르려고 합니다. Ansible 사용자의 NOPASSWD를 ALL로 설정하면 -become
비밀번호 없이 필요할 때마다 루트 액세스 권한을 얻을 수 있습니다.
나는 똑같은 일을 시도했지만 오랫동안 같은 결과를 얻지 못했습니다. CentOS 8을 실행하면 visudo 파일에 다음 줄이 포함됩니다.
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
ansible ALL=(ALL) NOPASSWD: ALL
cloud_user ALL=(ALL) NOPASSWD: ALL
루트 로그인이 제한되어 있기 때문에 cloud_user를 사용하여 로그인하지만 ansible을 통해 소프트웨어를 설치하려면 여전히 루트가 필요합니다. 목록에 있는 사용자의 순서를 인터넷에서 찾아봤는데, 보시다시피 cloud_user가 마지막이고 파일에서 다시 언급되지 않습니다. 나는 이것이 내가 비밀번호 없이 루트를 사용할 수 있게 해줄 것이라고 생각한다.
문제는 cloud_user가 sudo 명령에서 비밀번호를 입력하라는 메시지를 계속 표시하고 ansible이 "sudo 비밀번호 누락"이라는 메시지를 표시한다는 것입니다.
sudo -ll
산출:
Sudoers entry:
RunAsUsers: ALL
Options: !authenticate
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Options: !authenticate
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Options: !authenticate
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
sudo -l -U cloud_user
산출:
Matching Defaults entries for cloud_user on [host name]:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User cloud_user may run the following commands on [host name]:
(ALL) NOPASSWD: ALL
(ALL) NOPASSWD: ALL
(ALL) NOPASSWD: ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
(ALL) ALL
sudo cat /var/log/secure | grep cloud_user
산출:
Aug 27 13:23:11 localhost sshd[6222]: pam_unix(sshd:session): session opened for user cloud_user by (uid=0)
Aug 27 13:23:40 localhost sudo[6270]: cloud_user : TTY=pts/0 ; PWD=/home/cloud_user ; USER=root ; COMMAND=/bin/ls /root
Aug 27 13:23:40 localhost sudo[6270]: pam_unix(sudo:session): session opened for user root by cloud_user(uid=0)
Aug 27 13:24:03 localhost sudo[6291]: cloud_user : TTY=pts/0 ; PWD=/home/cloud_user ; USER=root ; COMMAND=/bin/cat /var/log/secure
Aug 27 13:24:03 localhost sudo[6291]: pam_unix(sudo:session): session opened for user root by cloud_user(uid=0)
답변1
여러 구성 라인이 요청된 명령과 일치하는 경우 cloud_user
마지막 라인이 우선합니다. 일치하지 않는 /etc/sudoers.d/90-cloud-init-users
행은 포함을 덮어씁니다.cloud_user
NOPASSWD
NOPASSWD
의 내용은 /etc/sudoers.d
또는 지시문의 기본 구성에 포함되어 있습니다 sudoers
(올바른 구문은 버전에 따라 다름). 구성 줄의 순서가 중요합니다. sudoers 줄을 순서대로 추가하여 구성 줄을 효과적으로 만들 수 있습니다.#includedir /etc/sudoers.d
@includedir /etc/sudoers.d
sudo
visudo -f /etc/sudoers.d/91-my-customizations
뒤쪽에에 의해 만들어진 것들 cloud-init
.
또한 /etc/sudo.conf
가능한 플러그인이나 대체 구성 소스를 확인하세요. 클라우드 공급자는 다음을 보장하기 위해 자체적으로 일부 사용자 정의를 추가했을 수 있습니다.그들의자동화는 항상 작업을 완료합니다.