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