有了上面的对应,我们可以组合出所有的权限
public enum FsAction {
// POSIX style
NONE("---"),
EXECUTE("--x"),
WRITE("-w-"),
WRITE_EXECUTE("-wx"),
READ("r--"),
READ_EXECUTE("r-x"),
READ_WRITE("rw-"),
ALL("rwx");
private final static FsAction[] vals = values();
//this FsAction是否包含that FsAction
public boolean implies(FsAction that) {}
//this FsAction和that FsAction 与操作
public FsAction and(FsAction that) {}
//this FsAction和that FsAction 或操作
public FsAction or(FsAction that) {}
//this FsAction和that FsAction 非操作
public FsAction not() {}
}
三.FsPermission
FsPermission对应着文件/目录的使用者权限,组权限,其他用户权限。
FsPermission applyUMask(FsPermission umask)方法得到一个去掉了umask权限的新权限。
public class FsPermission implements Writable {
private FsAction useraction = null;
private FsAction groupaction = null;
private FsAction otheraction = null;
/** Apply a umask to this permission and return a new one */
public FsPermission applyUMask(FsPermission umask) {
return new FsPermission(useraction.and(umask.useraction.not()),
groupaction.and(umask.groupaction.not()),
otheraction.and(umask.otheraction.not()));
}
}
checkSuperuserPrivilege(UserGroupInformation owner, String supergroup):Verify if the caller has the required permission.
checkPermission(String path, INodeDirectory root, boolean doCheckOwner,
FsAction ancestorAccess, FsAction parentAccess, FsAction access,
FsAction subAccess):Check whether current user have permissions to access the path.