gpt4 book ai didi

java - Tomcat 9不允许以777权限读取文件作为字符串?

转载 作者:行者123 更新时间:2023-12-01 19:04:33 24 4
gpt4 key购买 nike

我有一个 Tomcat 9 servlet 容器的 java Web 应用程序,它尝试在 Ubuntu 18.04 上读取具有 777 权限的/tmp 文件夹中的文件

ls -ltr /tmp/test.txt
-rwxrwxrwx 1 vagrant vagrant 10 Jan 3 17:03 /tmp/test.txt

java代码是:

    try {
result = FileUtils.readFileToString(new File("/tmp/test.txt"));
} catch (IOException ex) {
log.info("##### Cannot read file. Reason: " + ex.getMessage());
}

但总是显示错误

##### Cannot read file. Reason: File '/tmp/test.txt' does not exist

普通用户可以在终端窗口上正常打开此测试文件(示例用户:vagrant)。

vagrant@ras:~$ cat /tmp/test.txt

编辑:完全相同的根本问题可能会导致略有不同的症状,即 Tomcat 管理器应用程序无法用于部署位于/tmp 中的 war 文件。为了帮助将来的互联网搜索,以下是遇到此问题时您可能会在 catalina.out 中看到的典型错误。用户 tomcat 可以正确读取文件/tmp/my_app.war。尽管如此,你还是遇到了这个问题:

02-Apr-2021 22:25:20.254 SEVERE [http-nio-80-exec-4] org.apache.catalina.startup.ExpandWar.copy Error copying [/tmp/my_app.war] to [/var/lib/tomcat9/webapps/my_app.war]
java.io.FileNotFoundException: /tmp/my_app.war (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at org.apache.catalina.startup.ExpandWar.copy(ExpandWar.java:276)
at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:1016)

有人知道 Tomcat 9 的问题吗?我需要 Java Web 应用程序来读取此测试文件作为字符串。

最佳答案

我不得不直接在 tomcat 用户邮件列表中询问 http://tomcat.10.x6.nabble.com/Tomcat-9-does-not-allow-to-read-file-in-tmp-folder-with-777-permission-td5093298.html

我需要做的是更新/lib/systemd/system/tomcat9.service 并将 PrivateTmp=yes 设置为 PrivateTmp=no。然后,运行这两个命令:

sudo  systemctl daemon-reload
sudo systemctl restart tomcat9

之后,它就可以正常工作了(我的java web应用程序可以在/tmp/中创建文件夹并从中读取文件)。

关于java - Tomcat 9不允许以777权限读取文件作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59582796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com