Я пытаюсь правильно использовать команду sudo и файл sudoers, чтобы выполнить команду от имени другого пользователя.
У меня есть файл sudoers, настроенный следующим образом:
beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh
root, apache и bean-компоненты являются частью bean-компонентов группы.
Также / opt имеет 755 разрешений, в то время как каталог / opt / renovations и его подкаталоги принадлежат пользователю и группе bean-компонентов.
Команда, которую я пытаюсь запустить как бины:
sudo -n -u apache -i /opt/renovations/var/script-test.sh
-n: для того, чтобы у меня не запрашивался пароль, так как он будет запущен cron
-u: для того, чтобы я мог выдать себя за пользователя apache
-i: для того, чтобы я имитировал логин и мой .profile загружен. Мне нужно это, чтобы я получил доступ к переменным среды в .profile.
Проблема в том, что когда я запускаю команду sudo, я получаю следующее сообщение:
sudo: извините, для запуска sudo требуется пароль
Я пытался запустить это как в AIX, так и в Ubuntu, но проблема в обеих системах. Это работает, если я бегу:
sudo -n -u apache /opt/renovations/var/script-test.sh
Но без -i, моя среда не содержит всех переменных среды, которые мне нужны.
Есть ли что-то, что мне нужно обновить в моем файле sudoers, чтобы это было возможно?
visudo -c
возвращает (проверяет sudoers на наличие ошибок). Также, вы можете подтвердить полную версию AIX (oslevel -s
) и установленную версию sudo?beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh
и,beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh
но теперь я получаю новую ошибку, например:ksh: /opt/renovations/var/script-test.sh: cannot execute
Ответы:
Итак, как вы сами сказали @krzysto, решение состоит в том, чтобы добавить следующее в файл sudoers
Следующий отсутствующий фрагмент - убедиться, что у группы есть разрешения на выполнение сценариев, чтобы вы могли их выполнять.
источник