/** * Constructor * * @param length a file's length * @param isdir if the path is a directory * @param block_replication the file's replication factor * @param blocksize a file's block size * @param modification_time a file's modification time * @param access_time a file's access time * @param permission a file's permission * @param owner a file's owner * @param group a file's group * @param symlink symlink if the path is a symbolic link * @param path the path's qualified name * @param locations a file's block locations */ @Deprecated public LocatedFileStatus(long length, boolean isdir, int block_replication, long blocksize, long modification_time, long access_time, FsPermission permission, String owner, String group, Path symlink, Path path, BlockLocation[] locations) { this(length, isdir, block_replication, blocksize, modification_time, access_time, permission, owner, group, symlink, path, permission == null ? false : permission.getAclBit(), permission == null ? false : permission.getEncryptedBit(), permission == null ? false : permission.getErasureCodedBit(), locations); }
private static EnumSet<HdfsFileStatus.Flags> convertFlags( FsPermissionProto pbp) { EnumSet<HdfsFileStatus.Flags> f = EnumSet.noneOf(HdfsFileStatus.Flags.class); FsPermission p = new FsPermissionExtension((short)pbp.getPerm()); if (p.getAclBit()) { f.add(HdfsFileStatus.Flags.HAS_ACL); } if (p.getEncryptedBit()) { f.add(HdfsFileStatus.Flags.HAS_CRYPT); } if (p.getErasureCodedBit()) { f.add(HdfsFileStatus.Flags.HAS_EC); } return f; }
@Override protected void processPath(PathData item) throws IOException { FileStatus stat = item.stat; String line = String.format(lineFormat, (stat.isDirectory() ? "d" : "-"), stat.getPermission() + (stat.getPermission().getAclBit() ? "+" : " "), (stat.isFile() ? stat.getReplication() : "-"), stat.getOwner(), stat.getGroup(), formatSize(stat.getLen()), dateFormat.format(new Date(stat.getModificationTime())), item ); out.println(line); }
@Override protected void processPath(PathData item) throws IOException { FileStatus stat = item.stat; String line = String.format(lineFormat, (stat.isDirectory() ? "d" : "-"), stat.getPermission() + (stat.getPermission().getAclBit() ? "+" : " "), (stat.isFile() ? stat.getReplication() : "-"), stat.getOwner(), stat.getGroup(), formatSize(stat.getLen()), dateFormat.format(new Date(stat.getModificationTime())), item ); out.println(line); }
@Override protected void processPath(PathData item) throws IOException { FileStatus stat = item.stat; String line = String.format(lineFormat, (stat.isDirectory() ? "d" : "-"), stat.getPermission() + (stat.getPermission().getAclBit() ? "+" : " "), (stat.isFile() ? stat.getReplication() : "-"), stat.getOwner(), stat.getGroup(), formatSize(stat.getLen()), dateFormat.format(new Date(stat.getModificationTime())), item ); out.println(line); }
/** * Set redundant flags for compatibility with existing applications. */ static FsPermission convert(boolean isdir, boolean symlink, FsPermission p, Set<Flags> f) { if (p instanceof FsPermissionExtension) { // verify flags are set consistently assert p.getAclBit() == f.contains(HdfsFileStatus.Flags.HAS_ACL); assert p.getEncryptedBit() == f.contains(HdfsFileStatus.Flags.HAS_CRYPT); assert p.getErasureCodedBit() == f.contains(HdfsFileStatus.Flags.HAS_EC); return p; } if (null == p) { if (isdir) { p = FsPermission.getDirDefault(); } else if (symlink) { p = FsPermission.getDefault(); } else { p = FsPermission.getFileDefault(); } } return new FsPermissionExtension(p, f.contains(Flags.HAS_ACL), f.contains(Flags.HAS_CRYPT), f.contains(Flags.HAS_EC)); }
if (perm != null) { m.put("permission", toString(perm)); if (perm.getAclBit()) { m.put("aclBit", true);
if (perm != null) { m.put("permission", toString(perm)); if (perm.getAclBit()) { m.put("aclBit", true);
json.put(HttpFSFileSystem.BLOCK_SIZE_JSON, fileStatus.getBlockSize()); json.put(HttpFSFileSystem.REPLICATION_JSON, fileStatus.getReplication()); if (fileStatus.getPermission().getAclBit()) { json.put(HttpFSFileSystem.ACL_BIT_JSON, true);
FsPermission perm = status.getPermission(); m.put("permission", toString(perm)); if (perm.getAclBit()) { m.put("aclBit", true);
if (preserveAcls) { FsPermission perm = fileStatus.getPermission(); if (perm.getAclBit()) { List<AclEntry> aclEntries = fileSystem.getAclStatus( fileStatus.getPath()).getEntries();
FsPermission perm = status.getPermission(); m.put("permission", toString(perm)); if (perm.getAclBit()) { m.put("aclBit", true);
@Override protected void processPath(PathData item) throws IOException { out.println("# file: " + item); out.println("# owner: " + item.stat.getOwner()); out.println("# group: " + item.stat.getGroup()); FsPermission perm = item.stat.getPermission(); if (perm.getStickyBit()) { out.println("# flags: --" + (perm.getOtherAction().implies(FsAction.EXECUTE) ? "t" : "T")); } AclStatus aclStatus = item.fs.getAclStatus(item.path); List<AclEntry> entries = perm.getAclBit() ? aclStatus.getEntries() : Collections.<AclEntry> emptyList(); ScopedAclEntries scopedEntries = new ScopedAclEntries( AclUtil.getAclFromPermAndEntries(perm, entries)); printAclEntriesForSingleScope(aclStatus, perm, scopedEntries.getAccessEntries()); printAclEntriesForSingleScope(aclStatus, perm, scopedEntries.getDefaultEntries()); out.println(); }
@Override protected void processPath(PathData item) throws IOException { out.println("# file: " + item); out.println("# owner: " + item.stat.getOwner()); out.println("# group: " + item.stat.getGroup()); FsPermission perm = item.stat.getPermission(); if (perm.getStickyBit()) { out.println("# flags: --" + (perm.getOtherAction().implies(FsAction.EXECUTE) ? "t" : "T")); } AclStatus aclStatus = item.fs.getAclStatus(item.path); List<AclEntry> entries = perm.getAclBit() ? aclStatus.getEntries() : Collections.<AclEntry> emptyList(); ScopedAclEntries scopedEntries = new ScopedAclEntries( AclUtil.getAclFromPermAndEntries(perm, entries)); printAclEntriesForSingleScope(aclStatus, perm, scopedEntries.getAccessEntries()); printAclEntriesForSingleScope(aclStatus, perm, scopedEntries.getDefaultEntries()); out.println(); }
@Override protected void processPath(PathData item) throws IOException { out.println("# file: " + item); out.println("# owner: " + item.stat.getOwner()); out.println("# group: " + item.stat.getGroup()); FsPermission perm = item.stat.getPermission(); if (perm.getStickyBit()) { out.println("# flags: --" + (perm.getOtherAction().implies(FsAction.EXECUTE) ? "t" : "T")); } AclStatus aclStatus = item.fs.getAclStatus(item.path); List<AclEntry> entries = perm.getAclBit() ? aclStatus.getEntries() : Collections.<AclEntry> emptyList(); ScopedAclEntries scopedEntries = new ScopedAclEntries( AclUtil.getAclFromPermAndEntries(perm, entries)); printAclEntriesForSingleScope(aclStatus, perm, scopedEntries.getAccessEntries()); printAclEntriesForSingleScope(aclStatus, perm, scopedEntries.getDefaultEntries()); out.println(); }
/** * Asserts the value of the FsPermission bits on the inode of a specific path. * * @param fs FileSystem to use for check * @param pathToCheck Path inode to check * @param perm short expected permission bits * @throws IOException thrown if there is an I/O error */ public static void assertPermission(FileSystem fs, Path pathToCheck, short perm) throws IOException { short filteredPerm = (short)(perm & 01777); FsPermission fsPermission = fs.getFileStatus(pathToCheck).getPermission(); assertEquals(filteredPerm, fsPermission.toShort()); assertEquals(((perm & (1 << 12)) != 0), fsPermission.getAclBit()); } }
if (perm.getAclBit()) { List<AclEntry> srcEntries = src.fs.getAclStatus(src.path).getEntries();
if (perm.getAclBit()) { List<AclEntry> srcEntries = src.fs.getAclStatus(src.path).getEntries();
/** * Validates Git key permissions are secure on disk and throw an exception if not. * Otherwise exit out gracefully */ void verifyKeyPermissions(FileSystem fs, Path keyPath) throws IOException, ActionExecutorException{ String failedPermsWarning = "The permissions on the access key {0} are considered insecure: {1}"; FileStatus status = fs.getFileStatus(keyPath); FsPermission perms = status.getPermission(); // check standard permissioning for other's read access if (perms.getOtherAction().and(FsAction.READ) == FsAction.READ) { throw new ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "GIT012", XLog .format(failedPermsWarning, keyPath, perms.toString())); } // check if any ACLs have been specified which allow others read access if (perms.getAclBit()) { List<AclEntry> aclEntries = new ArrayList<>(fs.getAclStatus(keyPath).getEntries()); for (AclEntry acl: aclEntries) { if (acl.getType() == AclEntryType.OTHER && acl.getPermission().and(FsAction.READ) == FsAction.READ) { throw new ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "GIT013", XLog .format(failedPermsWarning, keyPath, perms.toString())); } } } }
/** * Validates Git key permissions are secure on disk and throw an exception if not. * Otherwise exit out gracefully */ void verifyKeyPermissions(FileSystem fs, Path keyPath) throws IOException, ActionExecutorException{ String failedPermsWarning = "The permissions on the access key {0} are considered insecure: {1}"; FileStatus status = fs.getFileStatus(keyPath); FsPermission perms = status.getPermission(); // check standard permissioning for other's read access if (perms.getOtherAction().and(FsAction.READ) == FsAction.READ) { throw new ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "GIT012", XLog .format(failedPermsWarning, keyPath, perms.toString())); } // check if any ACLs have been specified which allow others read access if (perms.getAclBit()) { List<AclEntry> aclEntries = new ArrayList<>(fs.getAclStatus(keyPath).getEntries()); for (AclEntry acl: aclEntries) { if (acl.getType() == AclEntryType.OTHER && acl.getPermission().and(FsAction.READ) == FsAction.READ) { throw new ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "GIT013", XLog .format(failedPermsWarning, keyPath, perms.toString())); } } } }