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

Daryn Sharp commented on HADOOP-8139:
-------------------------------------

bq. When would a non-windows user want subbing? When would a Windows user not 
require it?

I'm just presenting the options, but if we consider hadoop to be generally 
URI-based, then no subbing should ever occur for URIs.  MS deprecated their 
non-standard use of \ in URIs back in 2006.  A valid use case _may_ be 
C:\dir\file.  It's easy to identify the drive letter and convert to 
file:///C:/dir/file -- official file URI per MS support docs.  However, once 
you start using relative paths, it becomes murky whether \ is a dir sep or 
quoting char.  If we want consistent paths and quoting that are 
system-independent, then we should mandate /.  I think if we run external paths 
through File (at least for windows), it might normalize for us, but I need to 
find myself a windows machine to test.

All said, I agree #2 is the ideal for consistency.  #4 or #3 is an immediate 
remedy for unix.  #3 would not alter the existing windows behavior, giving us 
time to figure out how we want to improve it.  I'm somewhat concerned that if 
we let the cat out the bag with a "^" on windows (#4) we are going to have 
nasty cross-platform script compatibility in the future.

I'll investigate #2 tomorrow morning, but you've concerned me that it may be 
harder than it looks, and I don't have the means to stomp down windows bugs.  
What would you be willing to accept in 23.2 if #2 proves difficult?

                
> Path does not allow metachars to be escaped
> -------------------------------------------
>
>                 Key: HADOOP-8139
>                 URL: https://issues.apache.org/jira/browse/HADOOP-8139
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 0.23.0, 0.24.0
>            Reporter: Daryn Sharp
>            Assignee: Daryn Sharp
>            Priority: Blocker
>         Attachments: HADOOP-8139-2.patch, HADOOP-8139.patch, HADOOP-8139.patch
>
>
> Path converts "\" into "/", probably for windows support?  This means it's 
> impossible for the user to escape metachars in a path name.  Glob expansion 
> can have deadly results.
> Here are the most egregious examples. A user accidentally creates a path like 
> "/user/me/*/file".  Now they want to remove it.
> {noformat}"hadoop fs -rmr -skipTrash '/user/me/\*'" becomes...
> "hadoop fs -rmr -skipTrash /user/me/*"{noformat}
> * User/Admin: Nuked their home directory or any given directory
> {noformat}"hadoop fs -rmr -skipTrash '\*'" becomes...
> "hadoop fs -rmr -skipTrash /*"{noformat}
> * User:  Deleted _everything_ they have access to on the cluster
> * Admin: *Nukes the entire cluster*
> Note: FsShell is shown for illustrative purposes, however the problem is in 
> the Path object, not FsShell.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to