我正在尝试将下一组 posix 权限 rwxrwsr-x
设置到我在 java 中创建的文件夹,但没有成功。我尝试了下一个代码:
Set<PosixFilePermission> posixPermissions = PosixFilePermissions.fromString("rwxrwsr-x");
Files.setPosixFilePermissions(someDir, posixPermissions);
但我得到了下一个异常:
java.lang.IllegalArgumentException: Invalid mode
我花了一些时间寻找一种方法来做到这一点,但我找不到任何东西。我知道我可以使用 ProcessBuilder
类在操作系统中运行命令来设置这些权限,但我想纯粹用 Java 来完成。
我需要设置这些权限,以便在该目录中创建的任何文件“继承”该目录的组。
最佳答案
根据documentation您只能使用字符“r”、“w”、“x”和“-”。但是在您的代码片段中,您使用的是“s”,这当然是非法的。它应该是这样工作的:
Set<PosixFilePermission> posixPermissions = PosixFilePermissions.fromString("rwxrwxr-x");
Files.setPosixFilePermissions(someDir, posixPermissions);
Setuid (+s) 在纯 Java 中是不可能的,因为它是操作系统特定的功能。
关于java - 如何使用java设置执行位(s)权限的组ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946378/