我的环境设置如下:
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/tomcat7
以coder
用户运行tomcat服务。
另外,我必须更改几个tomcat
目录的权限。