Java Ubuntu Tomcat CIFS:允许Tomcat用户使用Servlet编写文件
我有以下环境设置Java Ubuntu Tomcat CIFS:允许Tomcat用户使用Servlet编写文件,java,tomcat,ubuntu,cifs,Java,Tomcat,Ubuntu,Cifs,我有以下环境设置 Server: Ubuntu App Server: Tomcat7 Java: JDK 7 servlet需要将文件写入装载文件夹。Tomcat正在使用一个名为tomcat7的用户运行,CIFS与另一个名为coder的用户绑定在/mntt/mydir/ 对于/mntt/mydir 服务将创建一个文件夹,并尝试将文件上载/写入该文件夹 创建文件夹时,它的权限设置为755,文件的权限设置为644,文件和文件夹的所有者都是coder,而不是tomcat7 所以,当我的程序
Server: Ubuntu
App Server: Tomcat7
Java: JDK 7
servlet需要将文件写入装载文件夹。Tomcat正在使用一个名为tomcat7
的用户运行,CIFS
与另一个名为coder
的用户绑定在/mntt/mydir/
对于/mntt/mydir
服务将创建一个文件夹,并尝试将文件上载/写入该文件夹
创建文件夹时,它的权限设置为755
,文件的权限设置为644
,文件和文件夹的所有者都是coder
,而不是tomcat7
所以,当我的程序试图在文件中写入某些内容时,它会抛出拒绝权限
异常
更新文件创建代码
//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
目录的权限。我不经常使用linux,但我认为在/mntt/mydir上设置gid标志会导致新目录从父目录继承user/group。作为用户coder
创建文件/目录的服务是什么?您可以控制/更改吗?@mavroprovato这是简单的java代码。请查找更新的问题我试过了,但它说我没有权限更改文件的权限如果您使用命令行作为coder
用户访问该目录并执行chmod 777文件
是否也失败了?这很奇怪,在linux中,文件的所有者可以更改该文件的权限…我以root用户身份登录,然后可以更改权限。程序以所有者身份创建目录coder
,但之后,当我尝试使用下面的代码更改权限时,它显示权限被拒绝
我尝试了您的代码,它抛出异常操作不允许
。因此,这是linux的问题,如果您无法以所有者身份更改权限,那么您就倒霉了。看看这个,它可能会有帮助:。