使用Java filewriter写入共享驱动器(NAS)的文件的权限问题



我有一个连接到Linux服务器的共享驱动器(NAS(,在那里我可以使用以下Java代码创建和写入文件。

String filePath = remotePath + fileName;
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(filePath));
fileWriter.write(fileContents);
fileWriter.close();
File file = new File(filePath);
file.setExecutable(true);
file.setWritable(true);
file.setReadable(true);

我也尝试过使用canExecute((、canWrite((、canRead((来记录权限属性,并且所有输出都记录为true。但是这个新创建的文件没有继承文件夹权限。当用户尝试使用Linux脚本访问(读取/删除(文件时,它会授予拒绝的权限。

运行脚本的用户是文件夹所有者,而文件显示所有者为root用户。由于策略的原因,用户没有sudo权限。如何使其可访问?

如果我正确理解这一点,那么您的Java进程将作为root运行。创建的文件由运行进程的用户所有。在您的情况下是root

我看到两种选择:

  1. 让创建文件的Java进程作为拥有目录的用户运行。因此,这些文件将由用户拥有和访问
  2. 如果Java进程必须以root的形式运行,那么您需要在写入文件后更改文件的所有者。请参阅Linux下使用java.nio.Files更改文件所有者组,了解如何做到这一点

最新更新