[英]Ubuntu Tomcat CIFS : Allow tomcat user to write file using Servlet
我有以下环境设置。
Server: Ubuntu
App Server: Tomcat7
Java: JDK 7
Servlet需要将文件写入安装文件夹。 Tomcat使用名为tomcat7
的用户运行,并且CIFS
与/mntt/mydir/
绑定到另一个名为coder
用户。
/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
目录的权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.