|
@@ -34,7 +34,6 @@ import static org.junit.Assert.fail;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.security.PrivilegedExceptionAction;
|
|
|
-import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -46,19 +45,16 @@ import org.apache.commons.logging.Log;
|
|
|
import org.apache.commons.logging.LogFactory;
|
|
|
import org.apache.hadoop.conf.Configuration;
|
|
|
import org.apache.hadoop.fs.CommonConfigurationKeys;
|
|
|
-import org.apache.hadoop.fs.FileStatus;
|
|
|
import org.apache.hadoop.fs.FileSystem;
|
|
|
import org.apache.hadoop.fs.Path;
|
|
|
import org.apache.hadoop.fs.Options.Rename;
|
|
|
import org.apache.hadoop.fs.permission.AclEntry;
|
|
|
import org.apache.hadoop.fs.permission.AclStatus;
|
|
|
-import org.apache.hadoop.fs.permission.FsAction;
|
|
|
import org.apache.hadoop.fs.permission.FsPermission;
|
|
|
import org.apache.hadoop.hdfs.TestDFSPermission.PermissionGenerator;
|
|
|
import org.apache.hadoop.hdfs.server.namenode.AclTestHelpers;
|
|
|
import org.apache.hadoop.hdfs.server.namenode.FSAclBaseTest;
|
|
|
import org.apache.hadoop.ipc.AsyncCallLimitExceededException;
|
|
|
-import org.apache.hadoop.security.AccessControlException;
|
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
|
import org.apache.hadoop.util.Time;
|
|
|
import org.junit.After;
|
|
@@ -445,7 +441,7 @@ public class TestAsyncDFS {
|
|
|
for (int i = 0; i < NUM_TESTS; i++) {
|
|
|
assertTrue(fs.exists(dsts[i]));
|
|
|
FsPermission fsPerm = new FsPermission(permissions[i]);
|
|
|
- checkAccessPermissions(fs.getFileStatus(dsts[i]), fsPerm.getUserAction());
|
|
|
+ fs.access(dsts[i], fsPerm.getUserAction());
|
|
|
}
|
|
|
|
|
|
// test setOwner
|
|
@@ -474,34 +470,4 @@ public class TestAsyncDFS {
|
|
|
assertTrue("group2".equals(fs.getFileStatus(dsts[i]).getGroup()));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- static void checkAccessPermissions(FileStatus stat, FsAction mode)
|
|
|
- throws IOException {
|
|
|
- checkAccessPermissions(UserGroupInformation.getCurrentUser(), stat, mode);
|
|
|
- }
|
|
|
-
|
|
|
- static void checkAccessPermissions(final UserGroupInformation ugi,
|
|
|
- FileStatus stat, FsAction mode) throws IOException {
|
|
|
- FsPermission perm = stat.getPermission();
|
|
|
- String user = ugi.getShortUserName();
|
|
|
- List<String> groups = Arrays.asList(ugi.getGroupNames());
|
|
|
-
|
|
|
- if (user.equals(stat.getOwner())) {
|
|
|
- if (perm.getUserAction().implies(mode)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- } else if (groups.contains(stat.getGroup())) {
|
|
|
- if (perm.getGroupAction().implies(mode)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (perm.getOtherAction().implies(mode)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- throw new AccessControlException(String.format(
|
|
|
- "Permission denied: user=%s, path=\"%s\":%s:%s:%s%s", user, stat
|
|
|
- .getPath(), stat.getOwner(), stat.getGroup(),
|
|
|
- stat.isDirectory() ? "d" : "-", perm));
|
|
|
- }
|
|
|
}
|