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)。
它奏效了。
正如 :
中所解释的那样
root_squash — 防止远程连接的 root 用户拥有 root 权限,并为他们分配用户 nfsnobody 的用户 ID。这有效地 "squashes" 将远程 root 用户的权力授予了最低级别的本地用户,防止了对远程服务器上文件的未授权更改。或者,no_root_squash 选项关闭根压缩。要压缩每个远程用户,包括 root,请使用 all_squash 选项。
我目前正在处理一个场景,我们必须在 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)。 它奏效了。 正如 :
中所解释的那样root_squash — 防止远程连接的 root 用户拥有 root 权限,并为他们分配用户 nfsnobody 的用户 ID。这有效地 "squashes" 将远程 root 用户的权力授予了最低级别的本地用户,防止了对远程服务器上文件的未授权更改。或者,no_root_squash 选项关闭根压缩。要压缩每个远程用户,包括 root,请使用 all_squash 选项。