[ 
https://issues.apache.org/jira/browse/HADOOP-9984?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13780350#comment-13780350
 ] 

Colin Patrick McCabe commented on HADOOP-9984:
----------------------------------------------

bq. Both listStatus and listLinkStatus must return file stats with the exact 
same paths. Those paths must be constructed from the "unresolved" paths. The 
only difference is whether the stat is for the symlink itself, or the stat of 
the resolved path.

Yes, exactly.

bq. Let's say a privileged server blocks access to certain schemes like "file" 
but happily accepts "hdfs" paths. As a devious user, I now create a symlink in 
hdfs back to local filesystem. I use this link to steal your keytab or maybe 
scribble over your config.

I could be ignorant here, but as far as I know, we have any mechanisms that 
"block access to certain schemes."  If you are running code on the machine as 
Fred, you get access to all the stuff Fred can do.  So in your hypothetical 
scenario, fred could just open localFS himself.  Plus, Kerberos doesn't store 
its keytab files as world-readable.  Your privileges are not escalated one iota 
by symlink resolution-- hence the discussion about people creating symlinks 
other people couldn't follow, etc.

With regard to data loss as a result of apps that can't handle schemes other 
than "hdfs"-- that problem already exists today with federation, as you 
yourself admitted.  With regard to delegation tokens, you will get an access 
control failure in the job, fix it, and move on.  Or you'll have to go after 
the MR job author for trying to access stuff that he's not supposed to.  This 
seems very similar to the situation today, where MR jobs can try to talk to any 
FS they want.

Why don't we include a configuration option that disables cross-filesystem 
symlink resolution on the client?
                
> FileSystem#globStatus and FileSystem#listStatus should resolve symlinks by 
> default
> ----------------------------------------------------------------------------------
>
>                 Key: HADOOP-9984
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9984
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 2.1.0-beta
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>            Priority: Blocker
>         Attachments: HADOOP-9984.001.patch, HADOOP-9984.003.patch, 
> HADOOP-9984.005.patch
>
>
> During the process of adding symlink support to FileSystem, we realized that 
> many existing HDFS clients would be broken by listStatus and globStatus 
> returning symlinks.  One example is applications that assume that 
> !FileStatus#isFile implies that the inode is a directory.  As we discussed in 
> HADOOP-9972 and HADOOP-9912, we should default these APIs to returning 
> resolved paths.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to