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的问题,如果您无法以所有者身份更改权限,那么您就倒霉了。看看这个,它可能会有帮助:。