从 Tomcat servlet 运行 sudo 命令

问题描述 投票:0回答:2

有没有办法让tomcat 7服务器(在Ubuntu服务器上运行)在命令行中执行sudo命令? 在这种特定情况下,我希望能够从另一台服务器关闭系统。 我必须使用什么代码? 我是否必须以 root 身份运行 tomcat 服务器,或者我可以在运行时获得这些权限并且仅用于此操作吗? 感谢您的帮助:)

java linux tomcat ubuntu tomcat7
2个回答
2
投票

无需以root身份运行Tomcat,只需将tomcat用户添加到

/etc/sudoers
即可允许他运行超级用户命令,例如
sudo shutdown now
。这种方式允许您指定用户可以执行的所需命令子集。例如。让他只跑
shutdown
:

tomcat ALL=NOPASSWD: /sbin/shutdown

要从 Java 代码运行 shell 命令,您可以调用

Runtime.exec()
之一或使用
ProcessBuilder

附注还可以尝试谷歌搜索

/etc/shutdown.allow
文件,该文件允许其中列出的任何用户运行关闭命令。但我从来没用过。


0
投票

如果您使用的不是 docker,而是 Ubuntu 24+ 并且收到此错误,您可以编辑

/etc/systemd/system/tomcat10.service.d/override.conf

并设置 [服务]

NoNewPrivileges=false

然后

systemctl daemon-reload
systemctl restart tomcat10

其他有用的设置还可以是:

PrivateTmp=false
ReadWritePaths=/tmp
© www.soinside.com 2019 - 2024. All rights reserved.