Как можно стать определенным пользователем без флага -u
(sudo su test_user
вместо sudo su -u test_user
)
Инвентарь (хосты)
[example]
test0001.example.org ansible_become_user=test_user ansible_become=true
ansible .cfg:
[defaults]
timeout=30
[privilege_escalation]
become_method="sudo"
become_flags="su"
И на целевом компьютере:
$ sudo -l
User foo may run the following commands on test0001:
(root) NOPASSWD: /bin/su test_user
Запуск плейбука теперь завершается неудачно с:
<test0001> (0, b'', b'')
<test0001> ESTABLISH SSH CONNECTION FOR USER: None
<test0001> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=30 -o ControlPath=/home/foo/.ansible/cp/c7eeb339b6 -tt test0001 '/bin/sh -c '"'"'sudo su -u test_user /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-geolooxawvydfclkjnetjajadmffqjvz ; /usr/bin/python /var/tmp/ansible-tmp-1578410709.7699296-180938533114945/AnsiballZ_setup.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
fatal: [test0001]: FAILED! => {
"msg": "Timeout (32s) waiting for privilege escalation prompt: \r\nWe trust you have received the usual lecture from the local System\r\nAdministrator. It usually boils down to these three things:\r\n\r\n #1) Respect the privacy of others.\r\n #2) Think before you type.\r\n #3) With great power comes great responsibility.\r\n\r\n"
}
И это потому, что он пытается стать test_user
с sudo su -u test_user
. Я на самом деле хочу, чтобы оно стало test_user
с sudo su test_user
(то есть без флага -u
). Как можно было бы указать ansible не включать флаг -u
?
Обратите внимание, что я не могу изменить файлы sudoers.