我正在尝试从我的开发箱重新启动 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>
答案1
如果您在使用 sudo 时遇到问题并收到如下消息:
sudo: sorry, you must have a tty to run sudo
那么你应该注释掉:
Defaults requiretty
在里面/etc/sudoers
。由于 RHEL/CentOS 默认开启该选项。
答案2
如果服务器有须藤安装后,您可以将自己添加到 sudoers 文件中(使用命令visudo
)- 您可以允许所有内容,也可以只允许该特定命令。然后使用sudo somecommand
以 root 权限运行它。
但无论采用哪种方法,您至少都需要以 root 身份登录一次 - 或者让其他人以 root 身份登录。
编辑:sudo 有一个无密码选项(NOPASSWD
在 sudoers 中),它不需要 tty(如果我没记错的话)。
答案3
让管理员将“/etc/init.d/tomcat”添加到无需密码即可执行的命令列表中,这样你能不使用 pty 执行 sudo 操作:
yourname machinename=(ALL) NOPASSWD:/etc/init.d/tomcat
不过,还有很多其他方法可以完成您要求的事情。