sudo - выдает себя за пользователя

8

Я пытаюсь правильно использовать команду 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, чтобы это было возможно?

krzyszto
источник
Что visudo -cвозвращает (проверяет sudoers на наличие ошибок). Также, вы можете подтвердить полную версию AIX ( oslevel -s) и установленную версию sudo?
EightBitTony
1
Кроме того, это работает, если вы перечислите имя сценария явно в sudo, а не подстановочный знак (и является ли имя файла символической ссылкой?).
EightBitTony
Спасибо @EightBitTone. Таким образом, я нашел решение для этой проблемы конфигурации sudoers: когда ключ -i используется, тогда настоящая команда 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
krzyszto
Анализ файла журнала / var / log / sudolog был очень полезен для устранения вышеуказанной проблемы (в AIX).
krzyszto

Ответы:

4

Итак, как вы сами сказали @krzysto, решение состоит в том, чтобы добавить следующее в файл sudoers

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 возникает только в среде тестирования, созданной для исследования проблемы олицетворения; на самом деле, производство все работает правильно
krzyszto