ユーザーに NOPASSWD を設定すると、まだパスワードの入力を求められます。

ユーザーに NOPASSWD を設定すると、まだパスワードの入力を求められます。

Ansibleユーザーを設定するためのチュートリアルに従おうとしています。 AnsibleユーザーのNOPASSWDをALLに設定すると、-becomeパスワードなしで必要に応じてrootアクセス権を取得できます。

私は同じことを試しましたが、長い間同じ結果を得ることができませんでした。 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が最後であり、ファイルに再び言及されません。私はこれが私がパスワードなしでrootを使うことができると思います。

問題は、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可能なプラグインまたは代替構成ソースを確認してください。クラウド プロバイダーは、次のことを保証するために独自のカスタマイズを追加した可能性があります。彼ら自動化は常に作業を完了します。

関連情報