通过list修改ACL权限
package org.mmedu.example.chap08.acl;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.fs.permission.AclEntry;import java.io.IOException;import java.util.ArrayList;import java.util.List;/*** @author Administrator*/public class SetAclList {public static void main(String[] args) {//1.设定配置信息System.setProperty("HADOOP_USER_NAME", "cxy");//2.设定配置信息Configuration conf = new Configuration();conf.addResource("config.xml");//2.1 初始化文件系统try {FileSystem fs = FileSystem.get(conf);Path aPath = new Path("/mamaedu.txt");//3.组织aclList<AclEntry> aclEntryList = new ArrayList<>();AclEntry ae1 = AclEntry.parseAclEntry("user:root:rwx", true);AclEntry ae2 = AclEntry.parseAclEntry("group:root:r--", true);AclEntry ae3 = AclEntry.parseAclEntry("other::---", true);aclEntryList.add(ae1);aclEntryList.add(ae2);aclEntryList.add(ae3);//修改aclfs.modifyAclEntries(aPath, aclEntryList);System.out.println("完成");} catch (IOException e) {e.printStackTrace();}}}
通过FsPermissions修改权限
package org.mmedu.example.chap08.acl;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.fs.permission.FsAction;import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;/*** @author Administrator*/public class SetAclList {public static void main(String[] args) {//1.设定配置信息System.setProperty("HADOOP_USER_NAME", "cxy");//2.设定配置信息Configuration conf = new Configuration();conf.addResource("config.xml");//2.1 初始化文件系统try {FileSystem fs = FileSystem.get(conf);Path aPath = new Path("/mamaedu.txt");//3.组织aclFsPermission permission = new FsPermission(FsAction.ALL, FsAction.READ, FsAction.NONE);//修改aclfs.setPermission(aPath, permission);System.out.println("完成");} catch (IOException e) {e.printStackTrace();}}}



获取文件ACL权限
问题一:我这个版本的jdk跟老师上课用的源码不一样,我这个AclStatus没办法获取到当前用户的permission
可以看见没有getPermission()这个API
问题二:最后输出的entry条目只有三个,mask和other条目都没有输出
正常应该有的条目如下
