You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ra...@apache.org on 2008/03/28 18:22:54 UTC

svn commit: r642304 - in /hadoop/core/branches/branch-0.16: CHANGES.txt src/java/org/apache/hadoop/fs/FsShell.java src/java/org/apache/hadoop/fs/FsShellPermissions.java src/test/org/apache/hadoop/dfs/TestDFSShell.java

Author: rangadi
Date: Fri Mar 28 10:22:51 2008
New Revision: 642304

URL: http://svn.apache.org/viewvc?rev=642304&view=rev
Log:
HADOOP-3098. Allow more characters in user and group names while
using -chown and -chgrp commands. (rangadi)

Modified:
    hadoop/core/branches/branch-0.16/CHANGES.txt
    hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShell.java
    hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShellPermissions.java
    hadoop/core/branches/branch-0.16/src/test/org/apache/hadoop/dfs/TestDFSShell.java

Modified: hadoop/core/branches/branch-0.16/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.16/CHANGES.txt?rev=642304&r1=642303&r2=642304&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.16/CHANGES.txt (original)
+++ hadoop/core/branches/branch-0.16/CHANGES.txt Fri Mar 28 10:22:51 2008
@@ -83,6 +83,9 @@
 
     HADOOP-2911. Make the information printed by the HOD allocate and
     info commands less verbose and clearer. (Vinod Kumar via nigel)
+
+    HADOOP-3098. Allow more characters in user and group names while
+    using -chown and -chgrp commands. (rangadi)
     
   BUG FIXES
 

Modified: hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShell.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShell.java?rev=642304&r1=642303&r2=642304&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShell.java (original)
+++ hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShell.java Fri Mar 28 10:22:51 2008
@@ -1272,8 +1272,14 @@
       "\t-R\tmodifies the files recursively. This is the only option\n" +
       "\t\tcurrently supported.\n\n" +
       "\t\tIf only owner or group is specified then only owner or\n" +
-      "\t\tgroup is modified. The owner and group names can only\n" + 
-      "\t\tcontain digits and alphabet. These names are case sensitive.\n";
+      "\t\tgroup is modified.\n\n" +
+      "\t\tThe owner and group names may only cosists of digits, alphabet,\n"+
+      "\t\tand any of '-_.@/' i.e. [-_.@/a-zA-Z0-9]. The names are case\n" +
+      "\t\tsensitive.\n\n" +
+      "\t\tWARNING: Avoid using '.' to separate user name and group though\n" +
+      "\t\tLinux allows it. If user names have dots in them and you are\n" +
+      "\t\tusing local file system, you might see surprising results since\n" +
+      "\t\tshell command 'chown' is used for local files.\n";
     
     String chgrp = FsShellPermissions.CHGRP_USAGE + "\n" +
       "\t\tThis is equivalent to -chown ... :GROUP ...\n";

Modified: hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShellPermissions.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShellPermissions.java?rev=642304&r1=642303&r2=642304&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShellPermissions.java (original)
+++ hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/fs/FsShellPermissions.java Fri Mar 28 10:22:51 2008
@@ -190,11 +190,13 @@
 
   /*========== chown ==========*/
   
-  ///allows only alpha-numberic names for owner group
+  static private String allowedChars = "[-_./@a-zA-Z0-9]";
+  ///allows only "allowedChars" above in names for owner and group
   static private Pattern chownPattern = 
-         Pattern.compile("^\\s*(\\p{Alnum}+)?([:.](\\p{Alnum}*))?\\s*$");
+         Pattern.compile("^\\s*(" + allowedChars + "+)?" +
+                          "([:](" + allowedChars + "*))?\\s*$");
   static private Pattern chgrpPattern = 
-         Pattern.compile("^\\s*(\\p{Alnum}+)\\s*$");
+         Pattern.compile("^\\s*(" + allowedChars + "+)\\s*$");
   
   static String CHOWN_USAGE = "-chown [-R] [OWNER][:[GROUP]] PATH...";
   static String CHGRP_USAGE = "-chgrp [-R] GROUP PATH...";  

Modified: hadoop/core/branches/branch-0.16/src/test/org/apache/hadoop/dfs/TestDFSShell.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.16/src/test/org/apache/hadoop/dfs/TestDFSShell.java?rev=642304&r1=642303&r2=642304&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.16/src/test/org/apache/hadoop/dfs/TestDFSShell.java (original)
+++ hadoop/core/branches/branch-0.16/src/test/org/apache/hadoop/dfs/TestDFSShell.java Fri Mar 28 10:22:51 2008
@@ -385,7 +385,7 @@
   public void testFilePermissions() throws IOException {
     Configuration conf = new Configuration();
     
-    //test chnmod on local fs
+    //test chmod on local fs
     FileSystem fs = FileSystem.getLocal(conf);
     testChmod(conf, fs, 
               (new File(TEST_ROOT_DIR, "chmodTest")).getAbsolutePath());
@@ -427,6 +427,20 @@
 
     runCmd(shell, "-chown", "-R", "hadoop:toys", "unknownFile", "/");
     confirmOwner("hadoop", "toys", fs, root, parent, path);
+    
+    // Test different characters in names
+
+    runCmd(shell, "-chown", "hdfs.user", file);
+    confirmOwner("hdfs.user", null, fs, path);
+    
+    runCmd(shell, "-chown", "_Hdfs.User-10:_hadoop.users--", file);
+    confirmOwner("_Hdfs.User-10", "_hadoop.users--", fs, path);
+    
+    runCmd(shell, "-chown", "hdfs/hadoop-core@apache.org:asf-projects", file);
+    confirmOwner("hdfs/hadoop-core@apache.org", "asf-projects", fs, path);
+    
+    runCmd(shell, "-chgrp", "hadoop-core@apache.org/100", file);
+    confirmOwner(null, "hadoop-core@apache.org/100", fs, path);
     
     cluster.shutdown();
   }