我正在使用java7文件API。用于设置我搜索过的文件的所有者,并且能够更改所有者属性。我的代码是
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)读取文件的访问权限和另外一个用户提供读/写访问权限。给用户特定的访问权限请提供一些代码或链接,以便我可以完成我的任务。
答案 0 :(得分:2)
这取自{7}的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);
代码。请参阅AclFileAttributeView Javadoc。
答案 1 :(得分:0)
您必须了解操作系统的权限政策, 你不能为不同的用户指定不同的权限,你必须以其他方式。
文件权限定义为3个八进制数字(基数为8),这是3组3个二进制数,
每3位代表Read,Write,Execute
第一组是Owner
,第二组是Group
,第三组是Other
所以,如果你想提供不同的权限,可以设置Group属性以便读取和写入,而其他只是为了阅读,之后,你必须添加你想要能够读写的用户对这个群体。