Мы хотели бы использовать Upstart для управления процессом Java и запускать его без полномочий root с помощью sudo. Мы находимся на RHEL 6, что означает, что Upstart слишком стар, чтобы позволить нам явно указывать пользователя, поэтому мы используем sudo.
Однако в файле конфигурации Sudo указано Defaults requiretty
что означает, что мы не можем бежать sudo -u
для запуска команды от имени пользователя без полномочий root. Получаем следующую ошибку
sudo: sorry, you must have a tty to run sudo
Есть ли способ заставить Upstart выделить псевдо-TTY, чтобы sudo позволил нам запустить этот процесс? Файл sudoers настроен в соответствии с политикой компании, и мы не можем его изменить.
Вам не нужно - и не следует - использовать sudo
менять пользователей в сценарии инициализации. Использовать su
или лучше, runuser
вместо. В runuser
команда должна быть доступна из RHEL 5 и будет делать правильные вещи в отношении контекстов SELinux и т. д.
runuser -u username -g groupname command arguments