有没有办法让一个Tomcat 7服务器(Ubuntu的服务器上运行),在命令行执行sudo命令? 在这种特殊情况下我想让它可以将系统中的其他服务器关闭。 我会得到什么代码使用? 而且我必须运行Tomcat服务器的根目录或者我可以在运行时,仅这一行动得到这些特权? 谢谢你的帮助:)
Answer 1:
无需运行Tomcat作为root,你可以tomcat的用户只需添加到/etc/sudoers
,让他跑了超级用户命令,如sudo shutdown now
。 这种方式可以让你指定可由用户要执行的命令所需的子集。 例如允许他只运行shutdown
:
tomcat ALL=NOPASSWD: /sbin/shutdown
要运行Java代码shell命令,你可以调用一个Runtime.exec()
或使用ProcessBuilder
。
PS也可以尝试在Google上搜寻有关/etc/shutdown.allow
其允许由在它列出的任何用户运行的关闭命令文件。 但我从来没有使用过。
文章来源: Running sudo command from Tomcat servlet