通过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.组织acl
List<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);
//修改acl
fs.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.组织acl
FsPermission permission = new FsPermission(FsAction.ALL, FsAction.READ, FsAction.NONE);
//修改acl
fs.setPermission(aPath, permission);
System.out.println("完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}
获取文件ACL权限
问题一:我这个版本的jdk跟老师上课用的源码不一样,我这个AclStatus没办法获取到当前用户的permission
可以看见没有getPermission()这个API
问题二:最后输出的entry条目只有三个,mask和other条目都没有输出
正常应该有的条目如下