Java 程序无法写入 linux 中已安装的系统

Java program is unable to write on mounted system in linux

我目前正在处理一个场景,我们必须在 Linux 和 Windows 的共享目录中创建一个文件。 我已经通过以下 link 来实现它:

https://www.journaldev.com/878/java-write-to-file

https://it.toolbox.com/question/how-to-write-a-file-in-a-network-folder-without-using-ftp-031208

我能够在 windows 网络中实现它,例如将文件名命名为 (\\198.168.1.1\data\files)

但是对于 Linux 首先我使用 NFS 来共享一个特定的目录使用下面的 links :

https://alvinsim.wordpress.com/2012/06/21/mounting-nfs-from-linux-to-aix/

https://www.tecmint.com/how-to-setup-nfs-server-in-linux/

但出现以下异常:

java.io.FileNotFoundException: /data/files (只读文件系统)

我发现以下问题已在以下线程中解决,但我无法成功:

https://askubuntu.com/questions/197459/how-to-fix-sudo-unable-to-open-read-only-file-system

如有任何建议,我们将不胜感激。

所以我终于知道问题出在哪里了。

我在 /etc/exports 文件中根据 link 创建的条目是不够的。 我们还需要使用一些选项(sync、rw 等)来允许任何手动修改或使用任何 java 程序进行修改。 就我而言,我应该使用选项 (rw,no_root_squash)。 它奏效了。 正如 :

中所解释的那样

https://serverfault.com/questions/611007/unable-to-write-to-mount-point-nfs-server-getting-permission-denied/611013#611013?newreg=ce76e9417ca645da9487a5d9ccbf0371

来自文档: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/deployment_guide/s1-nfs-server-config-exports

root_squash — 防止远程连接的 root 用户拥有 root 权限,并为他们分配用户 nfsnobody 的用户 ID。这有效地 "squashes" 将远程 root 用户的权力授予了最低级别的本地用户,防止了对远程服务器上文件的未授权更改。或者,no_root_squash 选项关闭根压缩。要压缩每个远程用户,包括 root,请使用 all_squash 选项。