4

有人可以解释一下,为什么 Ubuntu 13.04 和 java 1.7(OpenJDK 64 位)上的以下代码片段没有为其他人设置写入权限。所有其他权限都设置正确,除了为他人写作,我认为这是可疑的。

public void testCreateFileWithPermissions() throws IOException {
    Path target = Paths.get(TEST_FILE);
    cadf.createFileWithPermissions(target, "rwxrwxrwx");
    Set<PosixFilePermission> perms = Files.getPosixFilePermissions(target);
    for (PosixFilePermission perm : perms) {
      System.out.println(perm.toString());
    }
  }

public void createFileWithPermissions(Path target, String permissions)
      throws IOException {
    Set<PosixFilePermission> perms = PosixFilePermissions
        .fromString(permissions);
    FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions
        .asFileAttribute(perms);
    Files.createFile(target, attr);
  }

我得到以下输出:

OWNER_WRITE
OTHERS_EXECUTE
GROUP_READ
OWNER_READ
GROUP_EXECUTE
GROUP_WRITE
OWNER_EXECUTE
OTHERS_READ
4

2 回答 2

4

根据 CPU 100 的评论,我快速搜索了一下umask,结果发现我使用的是默认值,即0002. 因此,我无法为其他用户创建任何具有写入权限的文件。这是umask的一个很好的解释。

于 2013-06-12T17:23:45.470 回答
2

由于更改 umask 对我来说不是我Files.setPosixFilePermissions(Path, Set<PosixFilePermission>)在创建文件后使用的选项。

于 2013-09-02T14:16:07.677 回答