2013-06-12 58 views
3

有人可以解釋我,爲什麼沒有爲Ubuntu 13.04和Java 1.7(OpenJDK 64位)上的以下代碼片段設置其他人的寫權限。所有其他權限都設置正確,除了爲其他人寫文章外,我認爲這是可疑的。爲什麼在Java 7中文件寫入權限設置不正確?

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 
+1

這可能是umask的?......什麼的umask你在你的環境中有。 –

+0

謝謝!你說得對,我的umask是'0002'。我不知道「umask」和它的功能。 – Quirin

回答

3

根據CPU 100的評論,我做了一個快速搜索關於umask和事實證明我是對的默認值,這是0002。因此,我無法爲其他用戶創建任何具有寫入權限的文件。 下面是對umask的很好的解釋。

1

由於改變的umask是我沒有選擇我創建文件後使用Files.setPosixFilePermissions(Path, Set<PosixFilePermission>)

相關問題