java - 如何使用java设置执行位(s)权限的组ID

标签 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 来完成。 我需要设置这些权限,以便在该目录中创建的任何文件“继承”该目录的组。

最佳答案

根据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/

相关文章:

php - 为什么文件权限不断变化?

PHP即使具有777权限也无法写入文件

java - 使用 if 语句和单选按钮在 Jlabel 上显示文本

PHP - 杀死由 pcntl_fork 启动的子进程

c - main() 在信号处理期间是否暂停?

C读取其中包含null的文件

linux - Linux 中的 FACL 命令

java - 如何使用 java JDBC 获取 MySql 的数据库 "Schema"名称列表

java - 如何通过单击按钮选中所有复选框

JavaFX Canvas 和 BorderPane