2013-01-18 48 views
0

我正在使用java7文件api。用於設置我搜索的文件的所有者並且能夠更改所有者屬性。我的代碼是如何在java7中爲特定用戶設置文件訪問屬性

public static void main(String[] args){ 

    Path zip=Paths.get("/home/ritesh/hello"); 
    try{ 
     FileOwnerAttributeView view 
      = Files.getFileAttributeView(zip,FileOwnerAttributeView.class); 

     UserPrincipalLookupService lookupService 
      =FileSystems.getDefaullt().getUserPrincipalLookupService(); 

     UserPrincipal owner=null; 

     try{ owner =lookupService.lookupPrincipalByName("rashmi");} 
     catch(UserPrincipalNotFoundException e){System.out.println("User not found");} 

     view.setOwner(owner); 

    } catch (IOException e){ 
     e.printStackTrace();} 
    } 

從這個代碼我可以設置文件。但我的任務的所有者是給用戶(rashmi)讀訪問到文件中,多了一個用戶給讀/寫access.how給特定的用戶訪問權限,請給一些代碼或鏈接,以便我可以完成我的任務。

回答

2

這是從Java 7的Javadoc採取AclFileAttributeView(一點點重新格式化):

// lookup "joe" 
UserPrincipal joe = file.getFileSystem().getUserPrincipalLookupService() 
    .lookupPrincipalByName("joe"); 

// get view 
AclFileAttributeView view = Files.getFileAttributeView(file, 
             AclFileAttributeView.class); 

// create ACE to give "joe" read access 
AclEntry entry = AclEntry.newBuilder() 
    .setType(AclEntryType.ALLOW) 
    .setPrincipal(joe) 
    .setPermissions(AclEntryPermission.READ_DATA, 
        AclEntryPermission.READ_ATTRIBUTES) 
    .build(); 

// read ACL, insert ACE, re-write ACL 
List<AclEntry> acl = view.getAcl(); 
acl.add(0, entry); // insert before any DENY entries 
view.setAcl(acl); 

您需要使用正確的AclEntry代碼。請參閱AclFileAttributeView Javadoc

0

您必須瞭解操作系統的權限政策, 您無法爲不同的用戶指定不同的權限,您必須以其他方式執行此操作。

文件權限與3張八進制數(基數爲8),它是3組3張的二進制數, 每3位定義代表Read,Write,Execute 所述第一基團爲Owner,第二是Group,第三是Other

因此,如果您想賦予不同的權限,您可以將組屬性設置爲可以讀取和寫入,而其他只是讀取,之後,您必須添加您希望能夠讀取和寫入的用戶這個組。

+0

是不是隻有Unix/Linux? –

+0

我只是asume大多數程序員使用unix :),你可以在這裏瞭解windows權限http://docs.joomla.org/How_do_Windows_file_permissions_work%3F – Dima

+0

我被困在Windows上開發Java可能在任一系統上的應用程序。 –

相關問題