Ubuntu Tomcat CIFS:允许Tomcat用户使用Servlet写文件



我的环境设置如下:

Server: Ubuntu    
App Server: Tomcat7
Java: JDK 7

servlet需要将文件写入挂载文件夹。Tomcat使用一个名为tomcat7的用户运行,而CIFS与另一个名为coder的用户绑定在/mntt/mydir/上。

设置/mntt/mydir的权限为777

服务将创建一个文件夹,并尝试在该文件夹中上传/写入文件。

创建文件夹时,权限设置为755,文件权限设置为644,文件和文件夹的所有者都是coder而不是tomcat7

所以,当我的程序试图在文件中写东西时,它会抛出Permission denined异常。

更新文件创建代码

//Create directory
File uploadFile = new File(dirpath);
uploadFile.mkdirs();
//Create and Write to File
OutputStream stream = new FileOutputStream(new File(dirPath+"/upload"));

请指导。如果您需要进一步的信息,请告诉我。

谢谢

您可以按如下方式更改Java服务,以便创建的文件获得777权限,并且其他用户将能够向其写入:

    Path path = FileSystems.getDefault().getPath(
            file.getAbsolutePath());
    Files.setPosixFilePermissions(path,
            EnumSet.allOf(PosixFilePermission.class));

其中file是代表文件的java.io.File对象。如果您希望tomcat用户能够在该目录中创建文件,则可以对包含该文件的目录执行相同的操作。

我终于解决了这个问题!

我通过修改/etc/defaults/tomcat7coder用户运行tomcat服务。

另外,我必须更改几个tomcat目录的权限。

最新更新