Я пытаюсь перезагрузить свой Tomcat версии 5 на сервере centos из своего окна разработчика. Я могу войти в систему как обычный пользователь (не root), но мне нужно перезагрузить службу. Есть ли файл конфигурации, который я могу изменить, или группа, в которой должен находиться мой пользователь, чтобы иметь возможность перезапустить службу tomcat5?
РЕДАКТИРОВАТЬ: Я буду запускать эту задачу в Ant, и sudo не будет работать для этого, поскольку Ant не предоставляет вам виртуальный терминал.
РЕДАКТИРОВАТЬ: вот ошибка, когда я пытаюсь перезапустить tomcat как root через ant.
ssh root@server.com /sbin/service tomcat5 restart
restartTomcat:
[exec] Pseudo-terminal will not be allocated because stdin is not a terminal.
Он работает как root, у которого есть привилегии ssh. Команда как есть работает нормально.
РЕДАКТИРОВАТЬ
vi /etc/sudoers (EDIT: please use visudo instead)
comment out: #Default requiretty
Это исправляет элемент tty. Теперь работает как обычный пользователь.
Вот моя цель-муравей
<target name="restartTomcat">
<exec executable="/usr/bin/ssh">
<arg line="user@server.com sudo /sbin/service tomcat5 restart"/>
</exec>
</target>
Если на сервере есть судо установлен, вы можете добавить себя в файл sudoers (используя visudo
command) - вы можете разрешить все или только эту команду. Затем используйте sudo somecommand
чтобы запустить его с правами root.
Но независимо от того, каким методом, вам нужно будет хотя бы один раз войти в систему как root - или попросить кого-нибудь войти как root.
Редактировать: sudo имеет опцию без пароля (NOPASSWD
в sudoers), который не требует tty (если я правильно помню).
Если у вас возникли проблемы с использованием sudo, и вы получили такое сообщение:
sudo: sorry, you must have a tty to run sudo
Тогда вы должны прокомментировать:
Defaults requiretty
Внутри /etc/sudoers
. Поскольку в RHEL / CentOS эта опция включена по умолчанию.
Попросите администратора добавить "/etc/init.d/tomcat" в список команд, которые вы можете выполнять без пароля, таким образом вы жестяная банка sudo it без pty:
yourname machinename=(ALL) NOPASSWD:/etc/init.d/tomcat
Есть много других способов сделать то, о чем вы просите, тяжело.