我正在尝试从我的开发盒在 centos 服务器上重新启动我的 tomcat 版本 5。我可以以普通用户(不是 root)身份登录,但我需要能够重新启动服务。是否有我可以修改的配置文件或我的用户需要所在的组才能重新启动 tomcat5 服务?
编辑:我将在 Ant 中运行此任务,而 sudo 对此不起作用,因为 Ant 没有为您提供虚拟终端。
编辑:这是我尝试通过 ant 以 root 身份重新启动 tomcat 时出现的错误。
ssh [email protected] /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="[email protected] sudo /sbin/service tomcat5 restart"/>
</exec>
</target>
如果服务器安装了sudo,您可以将自己添加到 sudoers 文件(使用
visudo
命令) - 您可以允许所有内容,也可以只允许该特定命令。然后使用sudo somecommand
以root权限运行它。但无论采用何种方法,您都需要至少以 root 身份登录一次 - 或者让其他人以 root 身份登录。
编辑: sudo 有一个无密码选项(
NOPASSWD
在 sudoers 中),它不需要 tty(如果我没记错的话)。如果您在使用 sudo 时遇到问题并且收到如下消息:
然后你应该注释掉:
里面
/etc/sudoers
。由于 RHEL/CentOS 出厂时默认启用该选项。让管理员将“/etc/init.d/tomcat”添加到您可以在没有密码的情况下执行的命令列表中,这样您就可以在没有 pty 的情况下执行 sudo:
有很多其他方法可以做你所要求的,很难。