我创建了一个Java应用程序(在linux上运行),它在/tmp/
中生成一个文件,然后将其移动到安装在/mnt/path/to/dir
的远程磁盘(由Windows / Samba处理)上。
它适用于我的本地计算机,但不适用于pre-prod
环境。抛出这个众所周知的异常:
java.nio.file.FileSystemException: /mnt/[...]: Permission denied
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91) ~[na:1.8.0_45]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[na:1.8.0_45]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[na:1.8.0_45]
at sun.nio.fs.UnixCopyFile.copyFile(UnixCopyFile.java:283) ~[na:1.8.0_45]
at sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:471) ~[na:1.8.0_45]
显然,我检查了目录所有者,检查了目标目录是否存在等。
我还尝试以在远程计算机上启动应用程序的用户身份登录,并手动执行mv
命令:mv /path/to/source /mnt/path/to/destination
。
mv:列出«/ path / to / source»的属性:I / O错误。
(但文件实际上已被移动)。
导致此Permission denied
的原因是什么?
注意:我会通过用“复制+删除”替换“移动”来解决这个问题,但我仍然会对知道移动失败的原因感兴趣。