如何使用java在执行位(s)权限上设置组ID
Posted
技术标签:
【中文标题】如何使用java在执行位(s)权限上设置组ID【英文标题】:How to set group id on execution bit (s) permission using java 【发布时间】:2014-03-23 16:08:56 【问题描述】:我正在尝试将下一组 posix 权限 rwxrwsr-x
设置为我在 java 中创建的文件夹,但没有成功。我尝试了下一个代码:
Set<PosixFilePermission> posixPermissions = PosixFilePermissions.fromString("rwxrwsr-x");
Files.setPosixFilePermissions(someDir, posixPermissions);
但我得到了下一个例外:
java.lang.IllegalArgumentException: Invalid mode
我花了一些时间寻找一种方法来做到这一点,但我找不到任何东西。我知道我可以使用ProcessBuilder
类在操作系统中运行命令来设置这些权限,但我想纯粹在 Java 中执行此操作。
我需要设置这些权限,以便在该目录中创建的任何文件“继承”该目录的组。
【问题讨论】:
【参考方案1】:根据documentation,您只能使用字符“r”、“w”、“x”和“-”。但是在您的代码 sn-p 中,您使用的是“s”,这当然是非法的。它应该是这样工作的:
Set<PosixFilePermission> posixPermissions = PosixFilePermissions.fromString("rwxrwxr-x");
Files.setPosixFilePermissions(someDir, posixPermissions);
Setuid (+s) 在纯 Java 中是不可能的,因为它是特定于操作系统的特性。
【讨论】:
感谢您的回答。以前我没有完整阅读描述有效字符的文档。无论如何,我会接受您的回答,因为:“Setuid (+s) 在纯 Java 中是不可能的,因为它是特定于操作系统的功能。”以上是关于如何使用java在执行位(s)权限上设置组ID的主要内容,如果未能解决你的问题,请参考以下文章