Centos 7. Обычно, когда я хочу выполнить команду sudo как пользователь, не являющийся пользователем root, я открываю visudo и добавляю эту строку в нужное место:
%<userGroup> ALL= NOPASSWD: <command>
когда я хочу перезапустить службу - в моем текущем случае - mongodb.service с пользователем jenkins, я бы хотел сделать это следующим образом:
%jenkins ALL= NOPASSWD: /usr/bin/systemctl restart mongod.service
Пока все хорошо. Затем я переключаюсь на пользователя jenkins следующим образом:
sudo su -s /bin/bash jenkins
Затем я тестирую команду, и все работает нормально. Я делаю то же самое с командами stop/status/start и тоже тестирую их. Это все, что я хотел бы с ними сделать. Проблема в том, что когда я запускаю тесты с jenkins, он вызывает эти команды и ничего не делает. Этот mongodb предназначен только для тестирования, поэтому нормально, что он запускается только тогда, когда нам это нужно. Так что я хотел бы узнать, как заставить это работать? Или как иметь возможность перезапускать/останавливать/запускать службу с пользователем службы?
решение1
На всякий случай, если кто-то еще столкнется с такой же проблемой: я не получил никаких сообщений об ошибках для этих вещей, поэтому я решил поместить все в файл сценария, а затем дать разрешение на запуск файла сценария с правами sudo. В этом случае я получил это сообщение об ошибке: "sudo: извините, у вас должен быть tty для запуска sudo" Используя это, я мог бы отследить проблему с помощью этого решения: https://unix.stackexchange.com/questions/122616/почему-мне-нужен-терминал-для-запуска-sudo-если-я-могу-sudo-без-пароля