如何使用java在执行位权限上设置组ID

时间:2014-02-21 22:20:09

标签: java posix file-permissions

我正在尝试将下一组posix权限rwxrwsr-x设置为我在java中创建的文件夹,但是没有成功。我尝试了下一个代码:

Set<PosixFilePermission> posixPermissions = PosixFilePermissions.fromString("rwxrwsr-x");
Files.setPosixFilePermissions(someDir, posixPermissions);

但是我得到了下一个例外:

java.lang.IllegalArgumentException: Invalid mode

我花了一些时间寻找一种方法来做到这一点,但我找不到任何东西。我知道我可以使用ProcessBuilder类在操作系统中运行命令来设置这些权限,但我想纯粹用Java做这个。 我需要设置这些权限,以便在该目录中创建的任何文件“继承”目录组。

1 个答案:

答案 0 :(得分:2)

根据documentation,您只能使用字符'r','w','x'和' - '。但是在你的代码片段中你使用的是's',当然这是非法的。这应该是这样的:

Set<PosixFilePermission> posixPermissions = PosixFilePermissions.fromString("rwxrwxr-x");
Files.setPosixFilePermissions(someDir, posixPermissions);

Setuid(+ s)在纯Java中是不可能的,因为它是特定于操作系统的功能。