Назад | Перейти на главную страницу

Выполнение команды через tty без комментария «requiretty»

Я использую последнюю версию Jenkins на CentOS. В моей работе Jenkins я могу выполнять шаги пост-сборки и включать эту команду,

sudo /bin/rm /usr/java/jboss/server/default/deploy/myclient-1.0.war

который умирает с ошибкой

sudo: sorry, you must have a tty to run sudo

Есть ли способ переписать приведенное выше, чтобы запустить команду через tty-оболочку? В нашем файле / etc / sudoers у нас есть строка

Defaults    requiretty

но наш системный администратор запретил нам комментировать это.

У меня тоже была эта проблема при попытке запустить jboss как пользователь jboss. Проблема была решена изменением строки в файле /etc/init.d/jboss следующим образом:

до: su - $ JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND = 1 JBOSS_PIDFILE = $ JBOSS_PIDFILE $ JBOSS_SCRIPT -c $ JBOSS_CONFIG" 2> & 1> $ JBOSS_CONSOLE_LOG &

после: su - $ JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND = 1 JBOSS_PIDFILE = $ JBOSS_PIDFILE $ JBOSS_SCRIPT -c $ JBOSS_CONFIG 2> & 1> $ JBOSS_CONSOLE_LOG &"

но наш системный администратор запретил нам комментировать это.

Он может отключить только на jenkins пользователь:

Defaults:jenkins    !requiretty

Файлы в каталоге развертывания принадлежат jboss пользователь с 755 perms и Jenkins работает под пользователем jenkins.

или сделать deploy группа папок доступна для записи и установите бит SGID:

chmod -R g+w /usr/java/jboss/server/default/deploy/
chmod g+s /usr/java/jboss/server/default/deploy/

и добавить jenkins пользователь к jboss группа:

usermod -a -G jboss jenkins

тогда вы можете удалить /usr/java/jboss/server/default/deploy/myclient-1.0.war без использования sudo.

Если /usr/java/jboss/server/default/deploy/myclient-1.0.war необходимо удалить root, возможно, вы делаете что-то не так. Я не могу придумать вескую причину, по которой файл должен принадлежать root.

Другой вариант - посмотреть, как ваш системный администратор думает об отключении requiretty для этой единственной команды.

Cmnd_Alias           NOTTYCMD = /bin/rm /usr/java/jboss/server/default/deploy/myclient-1.0.war
Defaults!NOTTYCMD   !requiretty