【问题标题】:Read ACLs from CIFS mounted file system in Java从 Java 中的 CIFS 挂载文件系统读取 ACL
【发布时间】:2017-08-30 13:33:18
【问题描述】:

在一个 Linux 机器上,我使用

安装了一个 CIFS 文件系统
mount ... cifs ...,cifsacl

我可以使用/usr/bin/getcifsacl 读取 ACL。此外,在 Windows 机器上,读取 Java 中的 ACL 可用于:

AclFileAttributeView view = 
    Files.getFileAttributeView(path, AclFileAttributeView.class)

但是当我将相同的 Java 代码应用到 Linux 上的 CIFS 挂载时,viewnull

是否有机会调整 CIFS 挂载或 Java 代码以便我可以读取 ACL? (我知道 jCIFS,但不需要任何额外的 Java 类库。)

答案可能是help here too

【问题讨论】:

    标签: java linux cifs


    【解决方案1】:

    是否有机会调整... Java 代码以便我可以读取 ACL?

    您始终可以下载 OpenJDK 源代码,弄清楚如何构建它,然后进行更改以做您想做的事情。但这是个坏主意。您不太可能找到愿意承担您的更改的任何人,而且大多数人也不愿意运行它们。

    作为记录,Linux 的 OpenJDK 构建中的“rt.jar”文件不包括 Windows 文件属性视图提供程序类。他们不在那里。因此,您将无法使用(假设的)反射调整来使用 Windows 视图。也许您可以编译它们并将它们添加到引导类路径中。


    请注意,如果您出于许可原因不愿意使用 jCIFS,同样的原因应该会阻止您“调整”OpenJDK。 OpenJDK 被许可为 GPLv2(带有“类路径例外”),您的调整也将被涵盖。 (请注意,jCIFS 是 LGPLv2.1 ...它应该比 GPLv2 问题更少。)

    【讨论】:

    • 通过调整,我并不是针对 JVM/JDK 本身,而只是指我自己的 Java 代码,我可能在其中犯了愚蠢的错误。但无论如何,jar tvf .\jre\lib\rt.jar|grep -i windows|grep -i attribute 在 Linux 上确实是完全空的,而在 Windows 上显示了一些类。那将是我会去的最后一个地方。很遗憾,但事后看来可以理解:-(
    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多