사용자에 대해 NOPASSWD를 설정하면 여전히 비밀번호를 묻는 메시지가 표시됩니다.

사용자에 대해 NOPASSWD를 설정하면 여전히 비밀번호를 묻는 메시지가 표시됩니다.

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_userNOPASSWDNOPASSWD

의 내용은 /etc/sudoers.d또는 지시문의 기본 구성에 포함되어 있습니다 sudoers(올바른 구문은 버전에 따라 다름). 구성 줄의 순서가 중요합니다. sudoers 줄을 순서대로 추가하여 구성 줄을 효과적으로 만들 수 있습니다.#includedir /etc/sudoers.d@includedir /etc/sudoers.dsudovisudo -f /etc/sudoers.d/91-my-customizations뒤쪽에에 의해 만들어진 것들 cloud-init.

또한 /etc/sudo.conf가능한 플러그인이나 대체 구성 소스를 확인하세요. 클라우드 공급자는 다음을 보장하기 위해 자체적으로 일부 사용자 정의를 추가했을 수 있습니다.그들의자동화는 항상 작업을 완료합니다.

관련 정보