Jake Low created HDFS-8037: ------------------------------ Summary: WebHDFS: CheckAccess silently accepts certain malformed FsActions Key: HDFS-8037 URL: https://issues.apache.org/jira/browse/HDFS-8037 Project: Hadoop HDFS Issue Type: Bug Components: webhdfs Affects Versions: 2.6.0 Reporter: Jake Low Priority: Minor
WebHDFS's {{CHECKACCESS}} operation accepts a parameter called {{fsaction}}, which represents the type(s) of access to check for. According to the documentation, and also the source code, the domain of {{fsaction}} is the set of strings matched by the regex {{"\[rwx-\]{3\}"}}. This domain is wider than the set of valid {{FsAction}} objects, because it doesn't guarantee sensible ordering of access types. For example, the strings {{"rxw"}} and {{"--r"}} are valid {{fsaction}} parameter values, but don't correspond to valid {{FsAction}} instances. The result is that WebHDFS silently accepts {{fsaction}} parameter values which don't match any valid {{FsAction}} instance, but doesn't actually perform any permissions checking in this case. For example, here's a {{CHECKACCESS}} call where we request {{"rw-"}} access on a file which we only have permission to read and execute. It raises an exception, as it should. {code:none} curl -i -X GET "http://localhost:50070/webhdfs/v1/myfile?op=CHECKACCESS&user.name=nobody&fsaction=r-x" HTTP/1.1 403 Forbidden Content-Type: application/json { "RemoteException": { "exception": "AccessControlException", "javaClassName": "org.apache.hadoop.security.AccessControlException", "message": "Permission denied: user=nobody, access=READ_WRITE, inode=\"\/myfile\":root:supergroup:drwxr-xr-x" } } {code} But if we instead request {{"r-w"}} access, the call appears to succeed: {code:none} curl -X GET "http://localhost:50070/webhdfs/v1/myfile?op=CHECKACCESS&user.name=nobody&fsaction=r-w" HTTP/1.1 200 OK Content-Length: 0 {code} As I see it, the fix would be to change the regex pattern in {{FsActionParam}} to something like {{"\[r-\]\[w-\]\[x-\]"}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)