Example usage for org.apache.hadoop.fs.permission FsAction WRITE

List of usage examples for org.apache.hadoop.fs.permission FsAction WRITE

Introduction

In this page you can find the example usage for org.apache.hadoop.fs.permission FsAction WRITE.

Prototype

FsAction WRITE

To view the source code for org.apache.hadoop.fs.permission FsAction WRITE.

Click Source Link

Usage

From source file:alluxio.underfs.hdfs.acl.SupportedHdfsAclProvider.java

License:Apache License

@Override
public Pair<AccessControlList, DefaultAccessControlList> getAcl(FileSystem hdfs, String path)
        throws IOException {
    AclStatus hdfsAcl;//ww  w  .j  a  v a 2  s  .c om
    Path filePath = new Path(path);
    boolean isDir = hdfs.isDirectory(filePath);
    try {
        hdfsAcl = hdfs.getAclStatus(filePath);
    } catch (AclException e) {
        // When dfs.namenode.acls.enabled is false, getAclStatus throws AclException.
        return new Pair<>(null, null);
    }
    AccessControlList acl = new AccessControlList();
    DefaultAccessControlList defaultAcl = new DefaultAccessControlList();

    acl.setOwningUser(hdfsAcl.getOwner());
    acl.setOwningGroup(hdfsAcl.getGroup());
    defaultAcl.setOwningUser(hdfsAcl.getOwner());
    defaultAcl.setOwningGroup(hdfsAcl.getGroup());
    for (AclEntry entry : hdfsAcl.getEntries()) {
        alluxio.security.authorization.AclEntry.Builder builder = new alluxio.security.authorization.AclEntry.Builder();
        builder.setType(getAclEntryType(entry));
        builder.setSubject(entry.getName() == null ? "" : entry.getName());
        FsAction permission = entry.getPermission();
        if (permission.implies(FsAction.READ)) {
            builder.addAction(AclAction.READ);
        } else if (permission.implies(FsAction.WRITE)) {
            builder.addAction(AclAction.WRITE);
        } else if (permission.implies(FsAction.EXECUTE)) {
            builder.addAction(AclAction.EXECUTE);
        }
        if (entry.getScope().equals(AclEntryScope.ACCESS)) {
            acl.setEntry(builder.build());
        } else {
            // default ACL, must be a directory
            defaultAcl.setEntry(builder.build());
        }
    }
    if (isDir) {
        return new Pair<>(acl, defaultAcl);
    } else {
        // a null defaultACL indicates this is a file
        return new Pair<>(acl, null);
    }
}

From source file:com.cloudera.hadoop.hdfs.nfs.nfs4.handlers.TestACCESSHandler.java

License:Apache License

@Test
public void testPerms() throws Exception {
    List<PermTest> perms = Lists.newArrayList();
    // read for owner when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.READ, FsAction.NONE, FsAction.NONE),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP));
    // read for group when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.READ, FsAction.NONE),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP));
    // read for other when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.READ),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP));
    // read for other when not owner
    perms.add(new PermTest("notroot", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.READ),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP));
    // read for other when not owner
    perms.add(new PermTest("root", "notwheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.READ),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP));
    // read for other when not owner or group
    perms.add(new PermTest("notroot", "notwheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.READ),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP));

    // write for owner when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.WRITE, FsAction.NONE, FsAction.NONE),
            NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND | NFS_ACCESS_DELETE));
    // write for group when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.WRITE, FsAction.NONE),
            NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND | NFS_ACCESS_DELETE));
    // write for other when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.WRITE),
            NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND | NFS_ACCESS_DELETE));
    // write for other when not owner
    perms.add(new PermTest("notroot", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.WRITE),
            NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND));
    // write for other when not owner
    perms.add(new PermTest("root", "notwheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.WRITE),
            NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND | NFS_ACCESS_DELETE));
    // write for other when not owner or group
    perms.add(/*from   ww  w  .j a va2 s  .  co  m*/
            new PermTest("notroot", "notwheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.WRITE),
                    NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND));

    // execute for owner when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.EXECUTE, FsAction.NONE, FsAction.NONE),
            NFS_ACCESS_EXECUTE));
    // execute for group when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.EXECUTE, FsAction.NONE),
            NFS_ACCESS_EXECUTE));
    // execute for other when owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.EXECUTE),
            NFS_ACCESS_EXECUTE));
    // execute for other when not owner
    perms.add(new PermTest("notroot", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.EXECUTE),
            NFS_ACCESS_EXECUTE));
    // execute for other when not owner
    perms.add(new PermTest("root", "notwheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.EXECUTE),
            NFS_ACCESS_EXECUTE));
    // execute for other when not owner or group
    perms.add(new PermTest("notroot", "notwheel",
            new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.EXECUTE), NFS_ACCESS_EXECUTE));
    // no perms but owner, this might be rethought?
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.NONE), 0));
    // all for user/group but not user/groups
    perms.add(new PermTest("notroot", "notwheel", new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.NONE),
            0));
    // all for user/group but not user/group
    perms.add(
            new PermTest("notroot", "wheel", new FsPermission(FsAction.ALL, FsAction.NONE, FsAction.NONE), 0));
    // owner has all, is owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.ALL, FsAction.NONE, FsAction.NONE),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP | NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND | NFS_ACCESS_DELETE
                    | NFS_ACCESS_EXECUTE));
    // group has all is owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.ALL, FsAction.NONE),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP | NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND | NFS_ACCESS_DELETE
                    | NFS_ACCESS_EXECUTE));
    // other has all is owner
    perms.add(new PermTest("root", "wheel", new FsPermission(FsAction.NONE, FsAction.NONE, FsAction.ALL),
            NFS_ACCESS_READ | NFS_ACCESS_LOOKUP | NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND | NFS_ACCESS_DELETE
                    | NFS_ACCESS_EXECUTE));

    for (PermTest permTest : perms) {
        when(filePermissions.toShort()).thenReturn(permTest.perm.toShort());
        int result = ACCESSHandler.getPermsForUserGroup(permTest.user, new String[] { permTest.group },
                fileStatus);
        assertEquals(permTest.toString(), Integer.toBinaryString(permTest.result),
                Integer.toBinaryString(result));
    }
}

From source file:com.ning.hfind.FileStatusAttributes.java

License:Apache License

@Override
public boolean isWritableBy(String user, Collection<String> groups) {
    return allows(FsAction.WRITE, user, groups);
}

From source file:com.thinkbiganalytics.datalake.authorization.hdfs.HDFSUtil.java

License:Apache License

/**
 * @param hdfsPermission : Permission assgined by user.
 * @return : Final Permission to be set for creating ACL
 *//*from   www . ja  v a 2 s.c  o  m*/

private FsAction getFinalPermission(String hdfsPermission) {

    HashMap<String, Integer> standardPermissionMap = new HashMap<>();

    String[] permissions = hdfsPermission.split(",");
    standardPermissionMap.put(READ, 0);
    standardPermissionMap.put(WRITE, 0);
    standardPermissionMap.put(EXECUTE, 0);
    standardPermissionMap.put(NONE, 0);
    standardPermissionMap.put(ALL, 0);

    for (String permission : permissions) {

        permission = permission.toLowerCase();

        switch (permission) {
        case READ:
            standardPermissionMap.put(READ, 1);
            break;
        case WRITE:
            standardPermissionMap.put(WRITE, 1);
            break;
        case EXECUTE:
            standardPermissionMap.put(EXECUTE, 1);
            break;
        case ALL:
            return FsAction.ALL;
        case NONE:
            return FsAction.NONE;
        default:
            standardPermissionMap.put(NONE, 1);
        }
    }

    if (standardPermissionMap.get(READ) == 1 && standardPermissionMap.get(WRITE) == 1
            && standardPermissionMap.get(EXECUTE) == 1) {
        return FsAction.ALL;
    }

    if (standardPermissionMap.get(READ) == 1 && standardPermissionMap.get(WRITE) == 1) {
        return FsAction.READ_WRITE;
    }

    if (standardPermissionMap.get(READ) == 1 && standardPermissionMap.get(EXECUTE) == 1) {
        return FsAction.READ_EXECUTE;
    }

    if (standardPermissionMap.get(WRITE) == 1 && standardPermissionMap.get(EXECUTE) == 1) {
        return FsAction.WRITE_EXECUTE;
    }

    if (standardPermissionMap.get(WRITE) == 1) {
        return FsAction.WRITE;
    }

    if (standardPermissionMap.get(READ) == 1) {
        return FsAction.READ;
    }

    if (standardPermissionMap.get(EXECUTE) == 1) {
        return FsAction.EXECUTE;
    }

    // Default Permission - None
    return FsAction.NONE;

}

From source file:de.tiqsolutions.hdfs.HadoopFileSystem.java

License:Apache License

static FsPermission fromPosixPermissions(Set<PosixFilePermission> permissions) {
    FsAction u = FsAction.NONE, g = FsAction.NONE, o = FsAction.NONE;
    for (PosixFilePermission permission : permissions) {
        switch (permission) {
        case GROUP_EXECUTE:
            g = g.or(FsAction.EXECUTE);//from   w ww.j a v a  2s  . c om
            break;
        case GROUP_READ:
            g = g.or(FsAction.READ);
            break;
        case GROUP_WRITE:
            g = g.or(FsAction.WRITE);
            break;
        case OWNER_EXECUTE:
            u = u.or(FsAction.EXECUTE);
            break;
        case OWNER_READ:
            u = u.or(FsAction.READ);
            break;
        case OWNER_WRITE:
            u = u.or(FsAction.WRITE);
            break;
        case OTHERS_EXECUTE:
            o = o.or(FsAction.EXECUTE);
            break;
        case OTHERS_READ:
            o = o.or(FsAction.READ);
            break;
        case OTHERS_WRITE:
            o = o.or(FsAction.WRITE);
            break;
        default:
            break;
        }

    }
    return new FsPermission(u, g, o);

}

From source file:de.tiqsolutions.hdfs.PosixAttributesImpl.java

License:Apache License

@Override
public Set<PosixFilePermission> permissions() {
    Set<PosixFilePermission> permissions = new HashSet<>();
    FsPermission permission = fileStatus.getPermission();
    FsAction action = permission.getUserAction();
    if (action != null) {
        int bits = action.ordinal();
        if ((bits & FsAction.EXECUTE.ordinal()) > 0)
            permissions.add(PosixFilePermission.OWNER_EXECUTE);
        if ((bits & FsAction.WRITE.ordinal()) > 0)
            permissions.add(PosixFilePermission.OWNER_WRITE);
        if ((bits & FsAction.READ.ordinal()) > 0)
            permissions.add(PosixFilePermission.OWNER_READ);
    }/*from   ww w  . j  ava2 s .  c  o m*/

    action = permission.getGroupAction();
    if (action != null) {
        int bits = action.ordinal();
        if ((bits & FsAction.EXECUTE.ordinal()) > 0)
            permissions.add(PosixFilePermission.GROUP_EXECUTE);
        if ((bits & FsAction.WRITE.ordinal()) > 0)
            permissions.add(PosixFilePermission.GROUP_WRITE);
        if ((bits & FsAction.READ.ordinal()) > 0)
            permissions.add(PosixFilePermission.GROUP_READ);
    }

    action = permission.getOtherAction();
    if (action != null) {
        int bits = action.ordinal();
        if ((bits & FsAction.EXECUTE.ordinal()) > 0)
            permissions.add(PosixFilePermission.OTHERS_EXECUTE);
        if ((bits & FsAction.WRITE.ordinal()) > 0)
            permissions.add(PosixFilePermission.OTHERS_WRITE);
        if ((bits & FsAction.READ.ordinal()) > 0)
            permissions.add(PosixFilePermission.OTHERS_READ);
    }

    return permissions;
}

From source file:es.tid.cosmos.platform.injection.server.HadoopSshFile.java

License:Open Source License

@Override
public boolean isWritable() {
    if (this.doesExist()) {
        return isAllowed(FsAction.WRITE);
    } else {/*from  ww  w  .  jav  a2 s.  c o  m*/
        return this.getParentFile().isWritable();
    } // if else
}

From source file:es.tid.cosmos.platform.injection.server.HadoopSshFile.java

License:Open Source License

@Override
public boolean isRemovable() {
    return isAllowed(FsAction.WRITE);
}

From source file:hdfs.FileUtil.java

License:Apache License

/**
 * Set permissions to the required value. Uses the java primitives instead
 * of forking if group == other.//w  w  w. j a v a2 s  .  c o  m
 * @param f the file to change
 * @param permission the new permissions
 * @throws IOException
 */
public static void setPermission(File f, FsPermission permission) throws IOException {
    FsAction user = permission.getUserAction();
    FsAction group = permission.getGroupAction();
    FsAction other = permission.getOtherAction();

    // use the native/fork if the group/other permissions are different
    // or if the native is available    
    if (group != other || NativeIO.isAvailable()) {
        execSetPermission(f, permission);
        return;
    }

    boolean rv = true;

    // read perms
    rv = f.setReadable(group.implies(FsAction.READ), false);
    checkReturnValue(rv, f, permission);
    if (group.implies(FsAction.READ) != user.implies(FsAction.READ)) {
        f.setReadable(user.implies(FsAction.READ), true);
        checkReturnValue(rv, f, permission);
    }

    // write perms
    rv = f.setWritable(group.implies(FsAction.WRITE), false);
    checkReturnValue(rv, f, permission);
    if (group.implies(FsAction.WRITE) != user.implies(FsAction.WRITE)) {
        f.setWritable(user.implies(FsAction.WRITE), true);
        checkReturnValue(rv, f, permission);
    }

    // exec perms
    rv = f.setExecutable(group.implies(FsAction.EXECUTE), false);
    checkReturnValue(rv, f, permission);
    if (group.implies(FsAction.EXECUTE) != user.implies(FsAction.EXECUTE)) {
        f.setExecutable(user.implies(FsAction.EXECUTE), true);
        checkReturnValue(rv, f, permission);
    }
}

From source file:hsyndicate.fs.SyndicateFileSystem.java

License:Apache License

private FsAction parseMode(int mode) {
    FsAction action = FsAction.NONE;/*from  w w  w  .  j a  v a 2 s . com*/
    if ((mode & 0x04) == 0x04) {
        action = action.or(FsAction.READ);
    }
    if ((mode & 0x02) == 0x02) {
        action = action.or(FsAction.WRITE);
    }
    if ((mode & 0x01) == 0x01) {
        action = action.or(FsAction.EXECUTE);
    }
    return action;
}