/** * Check if user userName has permissions to perform the given FsAction action * on all files under the file whose FileStatus fileStatus is provided * * @param fs * @param fileStatus * @param userName * @param action * @return * @throws IOException */ public static boolean isActionPermittedForFileHierarchy(FileSystem fs, FileStatus fileStatus, String userName, FsAction action) throws Exception { return isActionPermittedForFileHierarchy(fs,fileStatus,userName, action, true); }
private static Set<SQLPrivTypeGrant> getPrivilegesFromFS( String userName, FileSystem fs, FileStatus fileStatus, boolean recurse) throws Exception { Set<SQLPrivTypeGrant> privs = new HashSet<SQLPrivTypeGrant>(); LOG.info("Checking fs privileges of user {} for {} {} ", userName, fileStatus.toString(), (recurse? "recursively":"without recursion")); if (FileUtils.isOwnerOfFileHierarchy(fs, fileStatus, userName, recurse)) { privs.add(SQLPrivTypeGrant.OWNER_PRIV); } if (FileUtils.isActionPermittedForFileHierarchy(fs, fileStatus, userName, FsAction.WRITE, recurse)) { privs.add(SQLPrivTypeGrant.INSERT_NOGRANT); privs.add(SQLPrivTypeGrant.DELETE_NOGRANT); } if (FileUtils.isActionPermittedForFileHierarchy(fs, fileStatus, userName, FsAction.READ, recurse)) { privs.add(SQLPrivTypeGrant.SELECT_NOGRANT); } LOG.debug("addPrivilegesFromFS:[{}] asked for privileges on [{}] with recurse={} and obtained:[{}]", userName, fileStatus, recurse, privs); return privs; }
private static Set<SQLPrivTypeGrant> getPrivilegesFromFS( String userName, FileSystem fs, FileStatus fileStatus, boolean recurse) throws Exception { Set<SQLPrivTypeGrant> privs = new HashSet<SQLPrivTypeGrant>(); LOG.debug("Checking fs privileges for {} {}", fileStatus.toString(), (recurse? "recursively":"without recursion")); if (FileUtils.isOwnerOfFileHierarchy(fs, fileStatus, userName, recurse)) { privs.add(SQLPrivTypeGrant.OWNER_PRIV); } if (FileUtils.isActionPermittedForFileHierarchy(fs, fileStatus, userName, FsAction.WRITE, recurse)) { privs.add(SQLPrivTypeGrant.INSERT_NOGRANT); privs.add(SQLPrivTypeGrant.DELETE_NOGRANT); } if (FileUtils.isActionPermittedForFileHierarchy(fs, fileStatus, userName, FsAction.READ, recurse)) { privs.add(SQLPrivTypeGrant.SELECT_NOGRANT); } LOG.debug("addPrivilegesFromFS:[{}] asked for privileges on [{}] with recurse={} and obtained:[{}]", userName, fileStatus, recurse, privs); return privs; }
if (!isActionPermittedForFileHierarchy(fs, childStatus, userName, action, true)) { return false;
FileUtils.isActionPermittedForFileHierarchy( srcFs, srcs, configuredOwner, FsAction.WRITE, false))) { return true;
/** * Check if user userName has permissions to perform the given FsAction action * on all files under the file whose FileStatus fileStatus is provided * * @param fs * @param fileStatus * @param userName * @param action * @return * @throws IOException */ public static boolean isActionPermittedForFileHierarchy(FileSystem fs, FileStatus fileStatus, String userName, FsAction action) throws Exception { return isActionPermittedForFileHierarchy(fs,fileStatus,userName, action, true); }
if (!isActionPermittedForFileHierarchy(fs, childStatus, userName, action, true)) { return false;
for (FileStatus childStatus : childStatuses) { if (!isActionPermittedForFileHierarchy(fs, childStatus, userName, action)) { return false;
availPrivs.addPrivilege(SQLPrivTypeGrant.OWNER_PRIV); if (FileUtils.isActionPermittedForFileHierarchy(fs, fileStatus, userName, FsAction.WRITE)) { availPrivs.addPrivilege(SQLPrivTypeGrant.INSERT_NOGRANT); availPrivs.addPrivilege(SQLPrivTypeGrant.DELETE_NOGRANT); if (FileUtils.isActionPermittedForFileHierarchy(fs, fileStatus, userName, FsAction.READ)) { availPrivs.addPrivilege(SQLPrivTypeGrant.SELECT_NOGRANT);