#linux #ansible
подскажите, пожалуйста, как работает sudo в ansible и в чем его разница, если я применяю sudo непосредственно в консоли, Авторизованным на сервере, в консоли выполняю [user@server01 opt]$ sudo mkdir /opt/test Выполняется успешно, но при использовании команды непосредственно с помощью ansible: [user@server01 opt]$ ansible servers -m file -a "dest=/opt/test mode=755" -k -u user -b Возникает ошибка "module_stdout": "Sorry, user user is not allowed to execute '/bin/sh -c echo BECOME-SUCCESS-qvlcsrrsgixvikeamiollrbbnyxljoxl Используется стандартные become настройки, включая метод, sudo. У меня и в самом деле ограниченный sudo на команды /bin/sh и /bin/bash, вопрос заключается в следующем, в чем разница моего локального выполнения sudo и через ansible, почему ansible под пользователем на конечном сервере пытается выполнить не sudo mkdir /opt/test, а как понимаю sudo /bin/sh mkdir /opt/test, в следствии чего возникает ошибка is not allowed to execute '/bin/sh mkdir /opt/test' as root? права sudo -l (ALL) NOPASSWD: ALL, !/bin/sh, !/bin/tcsh, !/bin/csh, !/bin/zsh, !/bin/ksh, !/bin/bash, !/usr/bin/sudo, !/bin/su, !/usr/bin/mc (root) NOPASSWD: ALL (root) NOPASSWD: ALL, !/bin/sh, !/bin/tcsh, !/bin/csh, !/bin/zsh, !/bin/ksh, !/bin/bash, !/usr/bin/sudo, !/bin/su, !/usr/bin/mc, !/usr/bin/chattr, !/usr/bin/screen, !/usr/bin/tmux P.S. коллеги, если убрать из запретов !/bin/sh и !/bin/bash, то конечно будет работать и аналогичный вопрос конечно уже был, но может с 17 года появились ответы, Как запустить плейбук ansible непривелигированному пользователю?
Ответы
Ответ 1
О-о-о, помню эту фигню. Суть в том, что Ansible перед тем, как выполнить собственно команду, зачем-то проверяет, можно ли вообще использовать sudo. И делает он это через /bin/sh -c echo …. И если этот echo не удаётся, он считает, что sudo не sudo. И это почти нигде не документировано! У меня была ситуация, где sudo разрешалось использовать одну-две команды, и никакого /bin/sh. Я с этим часа два боролся, а потом плюнул и решил просто прописать sudo внутри команды текстом и не использовать этот их сломанный, слишком «умный» become вовсе. Возможно, придёт другой коллега и покажет класс, но для меня ответ был простой: «Это сломано».
Комментариев нет:
Отправить комментарий