[
https://issues.apache.org/jira/browse/HDFS-6165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13951611#comment-13951611
]
Yongjun Zhang commented on HDFS-6165:
-------------------------------------
Thanks [~daryn], I'm working on making "-f" to work. I will post new patch when
I'm done. Certainly it would be helpful if you can review. There are three
issues observed now:
Running the following command as parent directory owner with WRITE permission:
1. "hdfs dfs -rm -r" behaves different than unix/linux "rm -r" when trying to
delete empty directory
hdfs throws exception; unix/linux prompt to user to ask for "yes/no"
2. "hdfs dfs -rm -r -f" doesn't delete empty directory, it also throws
exception, the "-f" switch essentially appears to be ignored; however
unix/linux "rm -rf" does delete.
3. "hdfs -rmdir" throws exception (thanks [~szetszwo] for suggesting to try),
unix/linux "rmdir" deletes empty directory as I reported earlier
{code}
[usrxyz@vm001 root]$ hadoop fs -lsr /
lsr: DEPRECATED: Please use 'ls -R' instead.
drwxr-xr-x - hdfs supergroup 0 2014-03-25 16:29 /user
drwxr-xr-x - hdfs supergroup 0 2014-03-25 16:28 /user/hdfs
drwxr-xr-x - usrxyz users 0 2014-03-27 16:10 /user/usrxyz
drwxr-xr-x - hdfs users 0 2014-03-25 16:32 /user/usrxyz/foo
-rw-r--r-- 1 hdfs users 5 2014-03-25 16:32
/user/usrxyz/foo/test.txt
drwxr-xr-x - abc abc 0 2014-03-27 16:10
/user/usrxyz/foo-empty
[usrxyz@vm001 root]$ su usrxyz
[usrxyz@vm001 root]$ whoami
usrxyz
[usrxyz@vm001 root]$ hdfs dfs -rm -r /user/usrxyz/foo-empty
14/03/28 16:45:22 INFO fs.TrashPolicyDefault: Namenode trash configuration:
Deletion interval = 0 minutes, Emptier interval = 0 minutes.
rm: Permission denied: user=usrxyz, access=ALL,
inode="/user/usrxyz/foo-empty":abc:abc:drwxr-xr-x
[usrxyz@vm001 root]$ hdfs dfs -rmdir /user/usrxyz/foo-empty
rmdir: Permission denied: user=usrxyz, access=ALL,
inode="/user/usrxyz/foo-empty":abc:abc:drwxr-xr-x
[usrxyz@vm001 root]$ hdfs dfs -rm -r -f /user/usrxyz/foo-empty
14/03/28 16:51:31 INFO fs.TrashPolicyDefault: Namenode trash configuration:
Deletion interval = 0 minutes, Emptier interval = 0 minutes.
rm: Permission denied: user=usrxyz, access=ALL,
inode="/user/usrxyz/foo-empty":abc:abc:drwxr-xr-x
[usrxyz@vm001 root]$
{code}
> "hdfs dfs -rm -r" is slightly different from the Unix "rm -r" for deleting an
> empty directory
> ---------------------------------------------------------------------------------------------
>
> Key: HDFS-6165
> URL: https://issues.apache.org/jira/browse/HDFS-6165
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: hdfs-client
> Affects Versions: 2.3.0
> Reporter: Yongjun Zhang
> Assignee: Yongjun Zhang
> Priority: Minor
> Attachments: HDFS-6165.001.patch
>
>
> Given a directory owned by user A with permissions 0700 containing an empty
> directory owned by user B, it is not possible to delete user B's directory.
> This is incorrect. Write permission on the containing directory should be all
> that is needed to delete the child directory. Here's a reproduction:
> {code}
> [root@vm01 ~]# hdfs dfs -ls /user/
> Found 4 items
> drwxr-xr-x - userabc users 0 2013-05-03 01:55 /user/userabc
> drwxr-xr-x - hdfs supergroup 0 2013-05-03 00:28 /user/hdfs
> drwxrwxrwx - mapred hadoop 0 2013-05-03 00:13 /user/history
> drwxr-xr-x - hdfs supergroup 0 2013-04-14 16:46 /user/hive
> [root@vm01 ~]# hdfs dfs -ls /user/userabc
> Found 8 items
> drwx------ - userabc users 0 2013-05-02 17:00 /user/userabc/.Trash
> drwxr-xr-x - userabc users 0 2013-05-03 01:34 /user/userabc/.cm
> drwx------ - userabc users 0 2013-05-03 01:06
> /user/userabc/.staging
> drwxr-xr-x - userabc users 0 2013-04-14 18:31 /user/userabc/apps
> drwxr-xr-x - userabc users 0 2013-04-30 18:05 /user/userabc/ds
> drwxr-xr-x - hdfs users 0 2013-05-03 01:54 /user/userabc/foo
> drwxr-xr-x - userabc users 0 2013-04-30 16:18
> /user/userabc/maven_source
> drwxr-xr-x - hdfs users 0 2013-05-03 01:40
> /user/userabc/test-restore
> [root@vm01 ~]# hdfs dfs -ls /user/userabc/foo/
> [root@vm01 ~]# sudo -u userabc hdfs dfs -rm -r -skipTrash /user/userabc/foo
> rm: Permission denied: user=userabc, access=ALL,
> inode="/user/userabc/foo":hdfs:users:drwxr-xr-x
> {code}
> The super user can delete the directory.
> {code}
> [root@vm01 ~]# sudo -u hdfs hdfs dfs -rm -r -skipTrash /user/userabc/foo
> Deleted /user/userabc/foo
> {code}
> The same is not true for files, however. They have the correct behavior.
> {code}
> [root@vm01 ~]# sudo -u hdfs hdfs dfs -touchz /user/userabc/foo-file
> [root@vm01 ~]# hdfs dfs -ls /user/userabc/
> Found 8 items
> drwx------ - userabc users 0 2013-05-02 17:00 /user/userabc/.Trash
> drwxr-xr-x - userabc users 0 2013-05-03 01:34 /user/userabc/.cm
> drwx------ - userabc users 0 2013-05-03 01:06
> /user/userabc/.staging
> drwxr-xr-x - userabc users 0 2013-04-14 18:31 /user/userabc/apps
> drwxr-xr-x - userabc users 0 2013-04-30 18:05 /user/userabc/ds
> -rw-r--r-- 1 hdfs users 0 2013-05-03 02:11
> /user/userabc/foo-file
> drwxr-xr-x - userabc users 0 2013-04-30 16:18
> /user/userabc/maven_source
> drwxr-xr-x - hdfs users 0 2013-05-03 01:40
> /user/userabc/test-restore
> [root@vm01 ~]# sudo -u userabc hdfs dfs -rm -skipTrash /user/userabc/foo-file
> Deleted /user/userabc/foo-file
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)