List of usage examples for org.apache.hadoop.fs.permission FsPermission getOtherAction
public FsAction getOtherAction()
From source file:TestParascaleFileStatus.java
License:Apache License
public void testLoadPermissionInfo() { final Path p = new Path("/foo/bar"); {/*from w w w . j av a 2s . c om*/ final ParascaleFileStatusMock parascaleFileStatus = new ParascaleFileStatusMock(10, false, 2, 32 * 1024 * 1024, System.currentTimeMillis(), p); parascaleFileStatus.permissionString = "-rw-r-xr-- 1 parascale parascale 0 Sep 9 12:37 16:43 bar"; final FsPermission permission = parascaleFileStatus.getPermission(); assertEquals(FsAction.READ, permission.getOtherAction()); assertEquals(FsAction.READ_EXECUTE, permission.getGroupAction()); assertEquals(FsAction.READ_WRITE, permission.getUserAction()); } { final ParascaleFileStatusMock parascaleFileStatus = new ParascaleFileStatusMock(10, false, 2, 32 * 1024 * 1024, System.currentTimeMillis(), p); parascaleFileStatus.permissionString = "-rw--wxr-- 1 parascale parascale 0 Sep 9 12:37 16:43 bar"; assertEquals(32 * 1024 * 1024, parascaleFileStatus.getBlockSize()); assertEquals("parascale", parascaleFileStatus.getOwner()); final FsPermission permission = parascaleFileStatus.getPermission(); assertEquals(FsAction.READ, permission.getOtherAction()); assertEquals(FsAction.WRITE_EXECUTE, permission.getGroupAction()); assertEquals(FsAction.READ_WRITE, permission.getUserAction()); } final ParascaleFileStatusMock parascaleFileStatus = new ParascaleFileStatusMock(10, false, 2, 32 * 1024 * 1024, System.currentTimeMillis(), p); parascaleFileStatus.permissionString = "-rw-r-xr-- 1 parascale parascale 0 Sep 9 12:37 16:43 bar"; assertEquals("permissions already loaded - should be lazy", 0, parascaleFileStatus.count.get()); parascaleFileStatus.getPermission(); assertEquals("permissions loaded more than once", 1, parascaleFileStatus.count.get()); parascaleFileStatus.getOwner(); assertEquals("permissions loaded more than once", 1, parascaleFileStatus.count.get()); parascaleFileStatus.getGroup(); assertEquals("permissions loaded more than once", 1, parascaleFileStatus.count.get()); }
From source file:com.cloudera.hadoop.hdfs.nfs.nfs4.state.HDFSState.java
License:Apache License
protected boolean check(String user, List<String> groups, FileStatus status, FsAction access) { FsPermission mode = status.getPermission(); if (user.equals(status.getOwner())) { // user class if (mode.getUserAction().implies(access)) { return true; }// www . ja va2 s. c o m } else if (groups.contains(status.getGroup())) { // group class if (mode.getGroupAction().implies(access)) { return true; } } else { // other class if (mode.getOtherAction().implies(access)) { return true; } } return false; }
From source file:com.cloudera.hoop.client.fs.HoopFileSystem.java
License:Open Source License
/** * Converts a <code>FsPermission</code> to a Unix string symbolic representation (ie: '-rwxr--r--') * @param p the permission./*from w w w. j a v a 2s.co m*/ * @return the Unix string symbolic reprentation. */ private String permissionToString(FsPermission p) { return (p == null) ? "default" : "-" + p.getUserAction().SYMBOL + p.getGroupAction().SYMBOL + p.getOtherAction().SYMBOL; }
From source file:com.cloudera.hoop.fs.FSUtils.java
License:Open Source License
/** * Converts a Hadoop permission into a Unix permission symbolic * representation (i.e. -rwxr--r--) or default if the permission is NULL. * * @param p Hadoop permission.//from www . j a v a 2s. c o m * @return the Unix permission symbolic representation or default if the * permission is NULL. */ private static String permissionToString(FsPermission p) { return (p == null) ? "default" : "-" + p.getUserAction().SYMBOL + p.getGroupAction().SYMBOL + p.getOtherAction().SYMBOL; }
From source file:com.cloudera.recordbreaker.analyzer.FSAnalyzer.java
License:Open Source License
/** * <code>addFileMetadata</code> stores the pathname, size, owner, etc. */// www . j a v a2 s . c om void addFileMetadata(final FileStatus fstatus, final long crawlId) { // Compute strings to represent file metadata Path insertFile = fstatus.getPath(); final boolean isDir = fstatus.isDir(); FsPermission fsp = fstatus.getPermission(); final String permissions = (isDir ? "d" : "-") + fsp.getUserAction().SYMBOL + fsp.getGroupAction().SYMBOL + fsp.getOtherAction().SYMBOL; // Compute formal pathname representation String fnameString = null; String parentPathString = null; if (isDir && insertFile.getParent() == null) { parentPathString = ""; fnameString = insertFile.toString(); } else { fnameString = insertFile.getName(); parentPathString = insertFile.getParent().toString(); // REMIND --- mjc --- If we want to modify the Files table s.t. it does // not contain the filesystem prefix, then this would be the place to do it. if (!parentPathString.endsWith("/")) { parentPathString = parentPathString + "/"; } } final String parentPath = parentPathString; final String fName = fnameString; final long fileId = dbQueue.execute(new SQLiteJob<Long>() { protected Long job(SQLiteConnection db) throws SQLiteException { SQLiteStatement stmt = db.prepare("INSERT into Files VALUES(null, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); try { stmt.bind(1, isDir ? "True" : "False").bind(2, crawlId).bind(3, fName) .bind(4, fstatus.getOwner()).bind(5, fstatus.getGroup()).bind(6, permissions) .bind(7, fstatus.getLen()) .bind(8, fileDateFormat.format(new Date(fstatus.getModificationTime()))) .bind(9, parentPath); stmt.step(); return db.getLastInsertId(); } finally { stmt.dispose(); } } }).complete(); }
From source file:com.cloudera.recordbreaker.fisheye.AccessController.java
License:Open Source License
public boolean hasReadAccess(FileSummary fs) { String fileOwner = fs.getOwner(); String fileGroup = fs.getGroup(); FsPermission fsp = fs.getPermissions(); // Check world-readable FsAction otherAction = fsp.getOtherAction(); if (otherAction == FsAction.ALL || otherAction == FsAction.READ || otherAction == FsAction.READ_EXECUTE || otherAction == FsAction.READ_WRITE) { return true; }//www. j a v a 2s .c o m // Check group-readable // REMIND -- mjc -- implement group-readable testing when we have the user database // that will tell us the current logged-in-user's groups. // Check owner-readable if (currentUser != null && currentUser.equals(fileOwner)) { FsAction userAction = fsp.getUserAction(); if (userAction == FsAction.ALL || userAction == FsAction.READ || userAction == FsAction.READ_EXECUTE || userAction == FsAction.READ_WRITE) { return true; } } return false; }
From source file:com.moz.fiji.mapreduce.tools.FijiBulkLoad.java
License:Apache License
/** * Helper method used by recursiveGrantAllReadWritePermissions to actually grant the * additional read and write permissions to all. It deals with FileStatus objects * since that is the object that supports listStatus. * * @param hdfs The FileSystem on which the file exists. * @param status The status of the file whose permissions are checked and on whose children * this method is called recursively. * @throws IOException on IOException.//from ww w .j a v a2s .co m */ private void recursiveGrantAllReadWritePermissions(FileSystem hdfs, FileStatus status) throws IOException { final FsPermission currentPermissions = status.getPermission(); if (!currentPermissions.getOtherAction().implies(FsAction.READ_WRITE)) { LOG.info("Adding a+rw to permissions for {}: {}", status.getPath(), currentPermissions); hdfs.setPermission(status.getPath(), new FsPermission(currentPermissions.getUserAction(), currentPermissions.getGroupAction().or(FsAction.READ_WRITE), currentPermissions.getOtherAction().or(FsAction.READ_WRITE))); } // Recurse into any files and directories in the path. // We must use listStatus because listFiles does not list subdirectories. FileStatus[] subStatuses = hdfs.listStatus(status.getPath()); for (FileStatus subStatus : subStatuses) { if (!subStatus.equals(status)) { recursiveGrantAllReadWritePermissions(hdfs, subStatus); } } }
From source file:com.ning.hfind.FileStatusAttributes.java
License:Apache License
private boolean allows(FsAction action, String user, Collection<String> groups) { FsPermission permission = status.getPermission(); return permission.getOtherAction().implies(action) || status.getOwner().equals(user) && permission.getUserAction().implies(action) || groups.contains(status.getGroup()) && permission.getGroupAction().implies(action); }
From source file:com.streamsets.pipeline.stage.destination.hdfs.util.TestHdfsUtils.java
License:Apache License
@Test public void testParseFsPermission() { FsPermission permission; /*/* ww w. j av a 2s. c o m*/ // Not testing string constants as they behave differently in different Hadoop versions permission = HdfsUtils.parseFsPermission("a-rwx"); // Pre HADOOP-13508 permission = HdfsUtils.parseFsPermission("a=rwx"); // Post HADOOP-13508 assertEquals(FsAction.ALL, permission.getUserAction()); assertEquals(FsAction.ALL, permission.getGroupAction()); assertEquals(FsAction.ALL, permission.getOtherAction()); */ // Octal format permission = HdfsUtils.parseFsPermission("770"); assertEquals(FsAction.ALL, permission.getUserAction()); assertEquals(FsAction.ALL, permission.getGroupAction()); assertEquals(FsAction.NONE, permission.getOtherAction()); // Unix format permission = HdfsUtils.parseFsPermission("rwxrwx---"); assertEquals(FsAction.ALL, permission.getUserAction()); assertEquals(FsAction.ALL, permission.getGroupAction()); assertEquals(FsAction.NONE, permission.getOtherAction()); }
From source file:com.uber.hoodie.common.table.timeline.dto.FSPermissionDTO.java
License:Apache License
public static FSPermissionDTO fromFsPermission(FsPermission permission) { if (null == permission) { return null; }//from w ww .ja v a 2 s . c o m FSPermissionDTO dto = new FSPermissionDTO(); dto.useraction = permission.getUserAction(); dto.groupaction = permission.getGroupAction(); dto.otheraction = permission.getOtherAction(); dto.stickyBit = permission.getStickyBit(); return dto; }