/** @return a string for throwing {@link AccessControlException} */ private String toAccessControlString(INodeAttributes inodeAttrib, String path, FsAction access) { return toAccessControlString(inodeAttrib, path, access, false); }
/** Guarded by {@link FSNamesystem#readLock()} */ private void check(INodeAttributes[] inodes, byte[][] components, int i, FsAction access) throws AccessControlException { INodeAttributes inode = (i >= 0) ? inodes[i] : null; if (inode != null && !hasPermission(inode, access)) { throw new AccessControlException( toAccessControlString(inode, getPath(components, 0, i), access)); } }
if (!hasPermission(inodeAttr, access)) { throw new AccessControlException( toAccessControlString(inodeAttr, d.getFullPathName(), access));
} catch (AccessControlException ace) { throw new AccessControlException( toAccessControlString(inode, inode.getFullPathName(), access));
/** @return a string for throwing {@link AccessControlException} */ private String toAccessControlString(INodeAttributes inodeAttrib, String path, FsAction access) { return toAccessControlString(inodeAttrib, path, access, false); }
/** @return a string for throwing {@link AccessControlException} */ private String toAccessControlString(INodeAttributes inodeAttrib, String path, FsAction access) { return toAccessControlString(inodeAttrib, path, access, false); }
/** Guarded by {@link FSNamesystem#readLock()} */ private void check(INodeAttributes[] inodes, int i, FsAction access) throws AccessControlException { INodeAttributes inode = (i >= 0) ? inodes[i] : null; if (inode != null && !hasPermission(inode, access)) { throw new AccessControlException( toAccessControlString(inode, constructPath(inodes, i), access)); } }
/** Guarded by {@link FSNamesystem#readLock()} */ private void check(INodeAttributes[] inodes, int i, FsAction access) throws AccessControlException { INodeAttributes inode = (i >= 0) ? inodes[i] : null; if (inode != null && !hasPermission(inode, access)) { throw new AccessControlException( toAccessControlString(inode, constructPath(inodes, i), access)); } }
/** Guarded by {@link FSNamesystem#readLock()} */ private void checkSubAccess(byte[][] components, int pathIdx, INode inode, int snapshotId, FsAction access, boolean ignoreEmptyDir) throws AccessControlException { if (inode == null || !inode.isDirectory()) { return; } Stack<INodeDirectory> directories = new Stack<INodeDirectory>(); for(directories.push(inode.asDirectory()); !directories.isEmpty(); ) { INodeDirectory d = directories.pop(); ReadOnlyList<INode> cList = d.getChildrenList(snapshotId); if (!(cList.isEmpty() && ignoreEmptyDir)) { //TODO have to figure this out with inodeattribute provider INodeAttributes inodeAttr = getINodeAttrs(components, pathIdx, d, snapshotId); if (!hasPermission(inodeAttr, access)) { throw new AccessControlException( toAccessControlString(inodeAttr, d.getFullPathName(), access)); } } for(INode child : cList) { if (child.isDirectory()) { directories.push(child.asDirectory()); } } } }
/** Guarded by {@link FSNamesystem#readLock()} */ private void checkSubAccess(byte[][] components, int pathIdx, INode inode, int snapshotId, FsAction access, boolean ignoreEmptyDir) throws AccessControlException { if (inode == null || !inode.isDirectory()) { return; } Stack<INodeDirectory> directories = new Stack<INodeDirectory>(); for(directories.push(inode.asDirectory()); !directories.isEmpty(); ) { INodeDirectory d = directories.pop(); ReadOnlyList<INode> cList = d.getChildrenList(snapshotId); if (!(cList.isEmpty() && ignoreEmptyDir)) { //TODO have to figure this out with inodeattribute provider INodeAttributes inodeAttr = getINodeAttrs(components, pathIdx, d, snapshotId); if (!hasPermission(inodeAttr, access)) { throw new AccessControlException( toAccessControlString(inodeAttr, d.getFullPathName(), access)); } } for(INode child : cList) { if (child.isDirectory()) { directories.push(child.asDirectory()); } } } }
/** Guarded by {@link FSNamesystem#readLock()} */ private void checkTraverse(INodeAttributes[] inodeAttrs, int last) throws AccessControlException { for (int i=0; i <= last; i++) { INodeAttributes inode = inodeAttrs[i]; if (!inode.isDirectory()) { throw new AccessControlException( constructPath(inodeAttrs, i) + " (is not a directory)"); } if (!hasPermission(inode, FsAction.EXECUTE)) { throw new AccessControlException(toAccessControlString( inode, constructPath(inodeAttrs, i), FsAction.EXECUTE)); } } }
/** Guarded by {@link FSNamesystem#readLock()} */ private void checkTraverse(INodeAttributes[] inodeAttrs, int last) throws AccessControlException { for (int i=0; i <= last; i++) { INodeAttributes inode = inodeAttrs[i]; if (!inode.isDirectory()) { throw new AccessControlException( constructPath(inodeAttrs, i) + " (is not a directory)"); } if (!hasPermission(inode, FsAction.EXECUTE)) { throw new AccessControlException(toAccessControlString( inode, constructPath(inodeAttrs, i), FsAction.EXECUTE)); } } }