Ubuntu

java.nio.file.FileSystemException:只讀文件系統

  • July 2, 2019

我有一個 tomcat webapp,它從圖像生成縮略圖並希望將其保存到可寫位置(chmod 777)。但是由於某種原因,我總是會java.nio.file.FileSystemException出錯,並且無法編寫該圖像。

它適用於我的本地電腦(在 intellij 中執行 webapp),但不適用於我的 azure ubuntu 18.04 伺服器 vm。我可以以任何使用者身份從終端在該目錄中創建一個文件。

java.nio.file.FileSystemException: /var/www/html/static/avatars/8SZK9w.jpg: Read-only file system
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:215) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:478) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/java.nio.file.Files.newOutputStream(Files.java:219) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/java.nio.file.Files.write(Files.java:3487) ~[na:na]
...

我嘗試了很多事情,例如更改文件夾的所有權,chmod 777 它,更改 /tmp 的路徑(改為觸發 FileNotFoundException),使用不同的 java 程式碼編寫文件。我也禁用了apparmor。

關於造成這種情況的任何建議?

此問題與 tomcat 的 Debian 沙盒有關。這裡描述了一個解決方案:

https://stackoverflow.com/questions/56827735/how-to-allow-tomcat-war-app-to-write-in-folder

引用自:https://serverfault.com/questions/972850