Webapp 无法使用 Ubuntu 20.04 和 Tomcat 9 写入 /tmp 目录



我正在将Tomcat web应用程序从旧版本的Ubuntu和Tomcat 7迁移到Ubuntu 20.04和Tomcat 9。该应用程序将各种文件写入/tmp目录,但在切换到Ubuntu 20.04和Tomcat9之后,写入/tmp文件夹的操作会自动失败。我在Tomcat日志中没有看到任何内容表明为什么没有写入文件,我的应用程序也没有抛出异常(如果应用程序无法写入目录,我希望会出现IO异常或其他情况(。

我做了一些实验,可以将文件写入/var/lib/tomcat/logs。我是否需要在Tomcat或Ubuntu中更改配置参数以允许Tomcat写入/tmp?

在最近的Debianoids(自Debian-Buster以来(上,tomcat9.service在其自己的mnt命名空间中运行(参见Linux命名空间(。唯一的安装点不同于";真实的">文件系统是/tmp,它位于:下

/tmp/systemd-private-*-tomcat9.service-*/tmp

并且它对于普通用户是不可访问的(它的父级是chmod700并且由root所有(。

如果您希望Tomcat与系统的其他部分共享/tmp目录,您可以通过以下方式覆盖tomcat9.service文件:

systemctl edit tomcat9.service

并添加:

[Service]
PrivateTmp=no

(参见SystemD文档(。

编辑:正如您在注释中所说,tomcat9.service设置了ProtectSystem=strict,因此服务将所有文件系统视为只读。因此,您要么需要:

ProtectSystem=off

ReadWritePaths=/tmp

我能够通过在/usr/lib/systemd/system/apache2.service下编辑文件来解决这个问题

和从进行编辑

PrivateTmp=True

PrivateTmp=no

相关内容

  • 没有找到相关文章

最新更新