使用 root 以外的用户运行 tomcat 守护进程

使用 root 以外的用户运行 tomcat 守护进程

我尝试创建一个使用 alpine (rootfs) 保护的容器 docker,它允许我运行 tomcat8 中包含的 web 应用程序 java。特别是,应该以什么用户身份运行 tomcat 守护进程?

我正在阅读 apache tomcat 8 的文档提到这一点,我有一个困惑。 来自 tomcat 8 文档

Tomcat不应该在root用户下运行。为 Tomcat 进程创建专用用户,并为该用户提供操作系统所需的最低权限。例如,不应使用 Tomcat 用户远程登录。

但随后说道:

以ASF的Tomcat实例为例(禁用自动部署,Web应用程序部署为分解目录),标准配置是让 Tomcat 组的 root 拥有所有 Tomcat 文件,所有者具有读/写权限,组仅具有读权限,而 world 没有权限。例外情况是由 Tomcat 用户而非 root 拥有的日志、临时目录和工作目录。这意味着即使攻击者破坏了 Tomcat 进程,他们也无法更改 Tomcat 配置、部署新的 Web 应用程序或修改现有的 Web 应用程序。 Tomcat 进程以 umask 007 运行以维护这些权限。

因此,我不清楚 tomcat 应该以哪个用户身份运行。如果 CATALINA_HOME/bin/startup.sh 的所有者是具有组 tomcat 的 root 用户,并且我创建另一个用户(例如具有组 tomcat 的 app)来运行 tomcat 守护程序,则运行 CATALINA_HOME/bin/startup.sh 后将不会启动,因为所有者用户是root,组只有读取权限。

有人有以非 root 用户身份使用 tar.gz 二进制文件运行 tomcat 守护进程的经验吗?

提前致谢。

答案1

创建一个用户帐户tomcat。确保它是该组的成员tomcat

文档中所有提到“读取”组权限的地方,使它们与所有者相同除非没有写权限。因此,如果用户具有脚本的读取、写入和执行权限,则该组应该具有读取和执行权限。

文档中安全建议的目的是允许用户tomcat运行 Tomcat 应用程序,但不能更改任何文件。

相关内容