能够删除没有权限的文件

时间:2017-12-20 21:26:30

标签: java tomcat permissions delete-file windows-server-2012-r2

尽管Tomcat用户没有删除权限,为什么我能够删除Java代码中的文件?

我的服务器正在运行以下代码,如果文件存在,则删除并重新创建文件:

File fileCSV = new File(filePath);
    try {
        if (fileCSV.exists()) {
            fileCSV.delete();
        }
        fileCSV.createNewFile();
    } catch (IOException ex) {
        throw new FooImportException("Error creating new file");
    }

尽管服务器用户没有删除权限,但能够删除文件 - 只有读写权限。

enter image description here

我确信这些是相关权限,因为代码在文件创建行上失败而没有"创建文件/写入数据"权限。但是,当缺少"删除"删除行时它不会失败允许。 可能是什么原因?

1 个答案:

答案 0 :(得分:1)

根据JavaDocs for File#delete

  

public boolean delete()
删除表示的文件或目录   这个抽象的路径名。如果此路径名表示目录,那么   目录必须为空才能被删除。

请注意Files   class定义delete方法在文件时抛出IOException   无法删除。这对错误报告和诊断很有用   为什么文件无法删除。

     

当且仅当文件或目录成功时,返回:
true   删除; false否则为:SecurityException - 如果是   安全经理存在及其   SecurityManager.checkDelete(java.lang.String)方法拒绝删除   访问文件

因此,File#delete在文件无法删除时实际上不会抛出Exception,而是根据操作成功返回boolean

如果Exception对您很重要,那么您应该使用Files#delete代替。

重要的是要注意 - 这只能根据可用的代码解决“为什么不会失败”的问题,而不是根据可用的文件权限解决“它会失败”的问题