java - 如何在 debian buster 中允许对 java/tomcat 目录进行写访问

标签 java java-11 file-writing tomcat9 debian-buster

我使用 tomcat9 软件包全新安装了 Debian buster。

我想在其上部署GeoWebCache应用程序(最新1.15版本),它需要一个具有读写访问权限的目录来存储配置文件、生成的缓存等...

我创建目录/opt/gwc_cachedir 并为其设置 777 权限:

# chmod -R 777/opt/gwc_cachedir

并将我的配置文件(geowebcache.xml)放入同样具有 777 权限的目录中。

启动tomcat实例时,日志显示/opt/gwc_cachedir目录不可写:

错误 [storage.DefaultStorageFinder] - 发现 Java 环境变量 GEOWEBCACHE_CACHE_DIR 设置为/opt/gwc_cachedir/,该变量不可写

这似乎是由调用 canWrite 函数引起的,该函数返回 false :

https://github.com/GeoWebCache/geowebcache/blob/f921c79adc24783cc445cf3ba0349b9bcd2a2421/geowebcache/core/src/main/java/org/geowebcache/storage/DefaultStorageFinder.java#L134

我不明白为什么它返回 false,因为/opt/gwc_cachedir 有 777 权限。

已解决

问题出在systemd服务定义上,我需要允许tomcat读取和写入目录

将此行添加到 /lib/systemd/system/tomcat9.service 即可完成工作:

ReadWritePaths=/opt/gwc_cachedir

最佳答案

看起来用于运行 tomcat9 进程的用户或组不允许写入您的缓存目录。

检查/etc/systemd/system/tomcat.service以查看tomcat进程将以哪个组和用户身份运行。

很可能是

User=tomcat
Group=tomcat

...在这种情况下,只需将缓存目录的所有者更改为 tomcat:

sudo chown -R tomcat:/opt/gwc_cachedir/

或者 Java 的安全管理器停止访问...解决方案仍在等待中...

关于java - 如何在 debian buster 中允许对 java/tomcat 目录进行写访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707255/

相关文章:

java - 使用正则表达式将字符串拆分为一些字符和转义序列

Java11 和 JMockit 1.43 Java.lang.UnsatisfiedLinkError 在 Jmockit 模型 System.currentTimeMillis 时发生

java - 为什么 Collection 接口(interface)中的方法再次在 List 接口(interface)中声明,尽管 List extends Collection

java - 更改节点后如何更新 XML 文件?

java - 在 EditText 上禁用剪贴板建议中的粘贴

java - Play Framework : PDF'ing a template that uses highcharts JS library via a Job

java - MapStruct 无法识别 @Mapping 中的字段 - 简单配置

java - 使用 Apache Camel 事务时如何回滚文件写入?

java - 用 Java 写入文件 : Cannot find the path specified

java - 在 TextField 中输入任何文本时在 Label 中显示文本