diff --git a/CHANGES.txt b/CHANGES.txt index d833ec3d029..ced75fd674a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -343,6 +343,9 @@ Trunk (unreleased changes) HADOOP-6690. FilterFileSystem correctly handles setTimes call. (Rodrigo Schmidt via dhruba) + HADOOP-6710. Symbolic umask for file creation is not conformant with posix. + (suresh) + HADOOP-6719. Insert all missing methods in FilterFs. (Rodrigo Schmidt via dhruba) diff --git a/src/java/org/apache/hadoop/fs/permission/FsPermission.java b/src/java/org/apache/hadoop/fs/permission/FsPermission.java index b5f9d7be3ac..a882b6af5ca 100644 --- a/src/java/org/apache/hadoop/fs/permission/FsPermission.java +++ b/src/java/org/apache/hadoop/fs/permission/FsPermission.java @@ -199,7 +199,20 @@ public class FsPermission implements Writable { public static final int DEFAULT_UMASK = CommonConfigurationKeys.FS_PERMISSIONS_UMASK_DEFAULT; - /** Get the user file creation mask (umask) */ + /** + * Get the user file creation mask (umask) + * + * {@code UMASK_LABEL} config param has umask value that is either symbolic + * or octal. + * + * Symbolic umask is applied relative to file mode creation mask; + * the permission op characters '+' clears the corresponding bit in the mask, + * '-' sets bits in the mask. + * + * Octal umask, the specified bits are set in the file mode creation mask. + * + * {@code DEPRECATED_UMASK_LABEL} config param has umask value set to decimal. + */ public static FsPermission getUMask(Configuration conf) { int umask = DEFAULT_UMASK; diff --git a/src/java/org/apache/hadoop/fs/permission/PermissionParser.java b/src/java/org/apache/hadoop/fs/permission/PermissionParser.java index e8fae43fa62..2a40bfea4a4 100644 --- a/src/java/org/apache/hadoop/fs/permission/PermissionParser.java +++ b/src/java/org/apache/hadoop/fs/permission/PermissionParser.java @@ -26,6 +26,7 @@ import java.util.regex.Pattern; * UmaskParser and ChmodParser classes. */ class PermissionParser { + protected boolean symbolic = false; protected short userMode; protected short groupMode; protected short othersMode; @@ -140,6 +141,7 @@ class PermissionParser { commaSeperated = matcher.group(4).contains(","); } + symbolic = true; } private void applyOctalPattern(String modeStr, Matcher matcher) { diff --git a/src/java/org/apache/hadoop/fs/permission/UmaskParser.java b/src/java/org/apache/hadoop/fs/permission/UmaskParser.java index 56bfd678cca..3d7e7d305ea 100644 --- a/src/java/org/apache/hadoop/fs/permission/UmaskParser.java +++ b/src/java/org/apache/hadoop/fs/permission/UmaskParser.java @@ -30,7 +30,7 @@ class UmaskParser extends PermissionParser { private static Pattern chmodOctalPattern = Pattern.compile("^\\s*[+]?()([0-7]{3})\\s*$"); // no leading 1 for sticky bit private static Pattern umaskSymbolicPattern = /* not allow X or t */ - Pattern.compile("\\G\\s*([ugoa]*)([+=-]+)([rwx]+)([,\\s]*)\\s*"); + Pattern.compile("\\G\\s*([ugoa]*)([+=-]+)([rwx]*)([,\\s]*)\\s*"); final short umaskMode; public UmaskParser(String modeStr) throws IllegalArgumentException { @@ -39,7 +39,21 @@ class UmaskParser extends PermissionParser { umaskMode = (short)combineModes(0, false); } + /** + * To be used for file/directory creation only. Symbolic umask is applied + * relative to file mode creation mask; the permission op characters '+' + * results in clearing the corresponding bit in the mask, '-' results in bits + * for indicated permission to be set in the mask. + * + * For octal umask, the specified bits are set in the file mode creation mask. + * + * @return umask + */ public short getUMask() { + if (symbolic) { + // Return the complement of octal equivalent of umask that was computed + return (short) (~umaskMode & 0777); + } return umaskMode; } } diff --git a/src/test/core/org/apache/hadoop/fs/permission/TestFsPermission.java b/src/test/core/org/apache/hadoop/fs/permission/TestFsPermission.java index 5e7e04a12ad..3dc84173113 100644 --- a/src/test/core/org/apache/hadoop/fs/permission/TestFsPermission.java +++ b/src/test/core/org/apache/hadoop/fs/permission/TestFsPermission.java @@ -133,17 +133,531 @@ public class TestFsPermission extends TestCase { } } - public void TestSymbolicUmasks() { + public void testSymbolicUmasks() { Configuration conf = new Configuration(); - // Test some symbolic settings Setting Octal result - String [] symbolic = new String [] { "a+rw", "666", - "u=x,g=r,o=w", "142", - "u=x", "100" }; + // Test some symbolic to octal settings + // Symbolic umask list is generated in linux shell using by the command: + // umask 0; umask ; umask -S + String [][] symbolic = new String [][] { + {"a+rw", "111",}, + {"u=rwx,g=rwx,o=rwx", "0",}, + {"u=rwx,g=rwx,o=rw", "1",}, + {"u=rwx,g=rwx,o=rx", "2",}, + {"u=rwx,g=rwx,o=r", "3",}, + {"u=rwx,g=rwx,o=wx", "4",}, + {"u=rwx,g=rwx,o=w", "5",}, + {"u=rwx,g=rwx,o=x", "6",}, + {"u=rwx,g=rwx,o=", "7",}, + {"u=rwx,g=rw,o=rwx", "10",}, + {"u=rwx,g=rw,o=rw", "11",}, + {"u=rwx,g=rw,o=rx", "12",}, + {"u=rwx,g=rw,o=r", "13",}, + {"u=rwx,g=rw,o=wx", "14",}, + {"u=rwx,g=rw,o=w", "15",}, + {"u=rwx,g=rw,o=x", "16",}, + {"u=rwx,g=rw,o=", "17",}, + {"u=rwx,g=rx,o=rwx", "20",}, + {"u=rwx,g=rx,o=rw", "21",}, + {"u=rwx,g=rx,o=rx", "22",}, + {"u=rwx,g=rx,o=r", "23",}, + {"u=rwx,g=rx,o=wx", "24",}, + {"u=rwx,g=rx,o=w", "25",}, + {"u=rwx,g=rx,o=x", "26",}, + {"u=rwx,g=rx,o=", "27",}, + {"u=rwx,g=r,o=rwx", "30",}, + {"u=rwx,g=r,o=rw", "31",}, + {"u=rwx,g=r,o=rx", "32",}, + {"u=rwx,g=r,o=r", "33",}, + {"u=rwx,g=r,o=wx", "34",}, + {"u=rwx,g=r,o=w", "35",}, + {"u=rwx,g=r,o=x", "36",}, + {"u=rwx,g=r,o=", "37",}, + {"u=rwx,g=wx,o=rwx", "40",}, + {"u=rwx,g=wx,o=rw", "41",}, + {"u=rwx,g=wx,o=rx", "42",}, + {"u=rwx,g=wx,o=r", "43",}, + {"u=rwx,g=wx,o=wx", "44",}, + {"u=rwx,g=wx,o=w", "45",}, + {"u=rwx,g=wx,o=x", "46",}, + {"u=rwx,g=wx,o=", "47",}, + {"u=rwx,g=w,o=rwx", "50",}, + {"u=rwx,g=w,o=rw", "51",}, + {"u=rwx,g=w,o=rx", "52",}, + {"u=rwx,g=w,o=r", "53",}, + {"u=rwx,g=w,o=wx", "54",}, + {"u=rwx,g=w,o=w", "55",}, + {"u=rwx,g=w,o=x", "56",}, + {"u=rwx,g=w,o=", "57",}, + {"u=rwx,g=x,o=rwx", "60",}, + {"u=rwx,g=x,o=rw", "61",}, + {"u=rwx,g=x,o=rx", "62",}, + {"u=rwx,g=x,o=r", "63",}, + {"u=rwx,g=x,o=wx", "64",}, + {"u=rwx,g=x,o=w", "65",}, + {"u=rwx,g=x,o=x", "66",}, + {"u=rwx,g=x,o=", "67",}, + {"u=rwx,g=,o=rwx", "70",}, + {"u=rwx,g=,o=rw", "71",}, + {"u=rwx,g=,o=rx", "72",}, + {"u=rwx,g=,o=r", "73",}, + {"u=rwx,g=,o=wx", "74",}, + {"u=rwx,g=,o=w", "75",}, + {"u=rwx,g=,o=x", "76",}, + {"u=rwx,g=,o=", "77",}, + {"u=rw,g=rwx,o=rwx", "100",}, + {"u=rw,g=rwx,o=rw", "101",}, + {"u=rw,g=rwx,o=rx", "102",}, + {"u=rw,g=rwx,o=r", "103",}, + {"u=rw,g=rwx,o=wx", "104",}, + {"u=rw,g=rwx,o=w", "105",}, + {"u=rw,g=rwx,o=x", "106",}, + {"u=rw,g=rwx,o=", "107",}, + {"u=rw,g=rw,o=rwx", "110",}, + {"u=rw,g=rw,o=rw", "111",}, + {"u=rw,g=rw,o=rx", "112",}, + {"u=rw,g=rw,o=r", "113",}, + {"u=rw,g=rw,o=wx", "114",}, + {"u=rw,g=rw,o=w", "115",}, + {"u=rw,g=rw,o=x", "116",}, + {"u=rw,g=rw,o=", "117",}, + {"u=rw,g=rx,o=rwx", "120",}, + {"u=rw,g=rx,o=rw", "121",}, + {"u=rw,g=rx,o=rx", "122",}, + {"u=rw,g=rx,o=r", "123",}, + {"u=rw,g=rx,o=wx", "124",}, + {"u=rw,g=rx,o=w", "125",}, + {"u=rw,g=rx,o=x", "126",}, + {"u=rw,g=rx,o=", "127",}, + {"u=rw,g=r,o=rwx", "130",}, + {"u=rw,g=r,o=rw", "131",}, + {"u=rw,g=r,o=rx", "132",}, + {"u=rw,g=r,o=r", "133",}, + {"u=rw,g=r,o=wx", "134",}, + {"u=rw,g=r,o=w", "135",}, + {"u=rw,g=r,o=x", "136",}, + {"u=rw,g=r,o=", "137",}, + {"u=rw,g=wx,o=rwx", "140",}, + {"u=rw,g=wx,o=rw", "141",}, + {"u=rw,g=wx,o=rx", "142",}, + {"u=rw,g=wx,o=r", "143",}, + {"u=rw,g=wx,o=wx", "144",}, + {"u=rw,g=wx,o=w", "145",}, + {"u=rw,g=wx,o=x", "146",}, + {"u=rw,g=wx,o=", "147",}, + {"u=rw,g=w,o=rwx", "150",}, + {"u=rw,g=w,o=rw", "151",}, + {"u=rw,g=w,o=rx", "152",}, + {"u=rw,g=w,o=r", "153",}, + {"u=rw,g=w,o=wx", "154",}, + {"u=rw,g=w,o=w", "155",}, + {"u=rw,g=w,o=x", "156",}, + {"u=rw,g=w,o=", "157",}, + {"u=rw,g=x,o=rwx", "160",}, + {"u=rw,g=x,o=rw", "161",}, + {"u=rw,g=x,o=rx", "162",}, + {"u=rw,g=x,o=r", "163",}, + {"u=rw,g=x,o=wx", "164",}, + {"u=rw,g=x,o=w", "165",}, + {"u=rw,g=x,o=x", "166",}, + {"u=rw,g=x,o=", "167",}, + {"u=rw,g=,o=rwx", "170",}, + {"u=rw,g=,o=rw", "171",}, + {"u=rw,g=,o=rx", "172",}, + {"u=rw,g=,o=r", "173",}, + {"u=rw,g=,o=wx", "174",}, + {"u=rw,g=,o=w", "175",}, + {"u=rw,g=,o=x", "176",}, + {"u=rw,g=,o=", "177",}, + {"u=rx,g=rwx,o=rwx", "200",}, + {"u=rx,g=rwx,o=rw", "201",}, + {"u=rx,g=rwx,o=rx", "202",}, + {"u=rx,g=rwx,o=r", "203",}, + {"u=rx,g=rwx,o=wx", "204",}, + {"u=rx,g=rwx,o=w", "205",}, + {"u=rx,g=rwx,o=x", "206",}, + {"u=rx,g=rwx,o=", "207",}, + {"u=rx,g=rw,o=rwx", "210",}, + {"u=rx,g=rw,o=rw", "211",}, + {"u=rx,g=rw,o=rx", "212",}, + {"u=rx,g=rw,o=r", "213",}, + {"u=rx,g=rw,o=wx", "214",}, + {"u=rx,g=rw,o=w", "215",}, + {"u=rx,g=rw,o=x", "216",}, + {"u=rx,g=rw,o=", "217",}, + {"u=rx,g=rx,o=rwx", "220",}, + {"u=rx,g=rx,o=rw", "221",}, + {"u=rx,g=rx,o=rx", "222",}, + {"u=rx,g=rx,o=r", "223",}, + {"u=rx,g=rx,o=wx", "224",}, + {"u=rx,g=rx,o=w", "225",}, + {"u=rx,g=rx,o=x", "226",}, + {"u=rx,g=rx,o=", "227",}, + {"u=rx,g=r,o=rwx", "230",}, + {"u=rx,g=r,o=rw", "231",}, + {"u=rx,g=r,o=rx", "232",}, + {"u=rx,g=r,o=r", "233",}, + {"u=rx,g=r,o=wx", "234",}, + {"u=rx,g=r,o=w", "235",}, + {"u=rx,g=r,o=x", "236",}, + {"u=rx,g=r,o=", "237",}, + {"u=rx,g=wx,o=rwx", "240",}, + {"u=rx,g=wx,o=rw", "241",}, + {"u=rx,g=wx,o=rx", "242",}, + {"u=rx,g=wx,o=r", "243",}, + {"u=rx,g=wx,o=wx", "244",}, + {"u=rx,g=wx,o=w", "245",}, + {"u=rx,g=wx,o=x", "246",}, + {"u=rx,g=wx,o=", "247",}, + {"u=rx,g=w,o=rwx", "250",}, + {"u=rx,g=w,o=rw", "251",}, + {"u=rx,g=w,o=rx", "252",}, + {"u=rx,g=w,o=r", "253",}, + {"u=rx,g=w,o=wx", "254",}, + {"u=rx,g=w,o=w", "255",}, + {"u=rx,g=w,o=x", "256",}, + {"u=rx,g=w,o=", "257",}, + {"u=rx,g=x,o=rwx", "260",}, + {"u=rx,g=x,o=rw", "261",}, + {"u=rx,g=x,o=rx", "262",}, + {"u=rx,g=x,o=r", "263",}, + {"u=rx,g=x,o=wx", "264",}, + {"u=rx,g=x,o=w", "265",}, + {"u=rx,g=x,o=x", "266",}, + {"u=rx,g=x,o=", "267",}, + {"u=rx,g=,o=rwx", "270",}, + {"u=rx,g=,o=rw", "271",}, + {"u=rx,g=,o=rx", "272",}, + {"u=rx,g=,o=r", "273",}, + {"u=rx,g=,o=wx", "274",}, + {"u=rx,g=,o=w", "275",}, + {"u=rx,g=,o=x", "276",}, + {"u=rx,g=,o=", "277",}, + {"u=r,g=rwx,o=rwx", "300",}, + {"u=r,g=rwx,o=rw", "301",}, + {"u=r,g=rwx,o=rx", "302",}, + {"u=r,g=rwx,o=r", "303",}, + {"u=r,g=rwx,o=wx", "304",}, + {"u=r,g=rwx,o=w", "305",}, + {"u=r,g=rwx,o=x", "306",}, + {"u=r,g=rwx,o=", "307",}, + {"u=r,g=rw,o=rwx", "310",}, + {"u=r,g=rw,o=rw", "311",}, + {"u=r,g=rw,o=rx", "312",}, + {"u=r,g=rw,o=r", "313",}, + {"u=r,g=rw,o=wx", "314",}, + {"u=r,g=rw,o=w", "315",}, + {"u=r,g=rw,o=x", "316",}, + {"u=r,g=rw,o=", "317",}, + {"u=r,g=rx,o=rwx", "320",}, + {"u=r,g=rx,o=rw", "321",}, + {"u=r,g=rx,o=rx", "322",}, + {"u=r,g=rx,o=r", "323",}, + {"u=r,g=rx,o=wx", "324",}, + {"u=r,g=rx,o=w", "325",}, + {"u=r,g=rx,o=x", "326",}, + {"u=r,g=rx,o=", "327",}, + {"u=r,g=r,o=rwx", "330",}, + {"u=r,g=r,o=rw", "331",}, + {"u=r,g=r,o=rx", "332",}, + {"u=r,g=r,o=r", "333",}, + {"u=r,g=r,o=wx", "334",}, + {"u=r,g=r,o=w", "335",}, + {"u=r,g=r,o=x", "336",}, + {"u=r,g=r,o=", "337",}, + {"u=r,g=wx,o=rwx", "340",}, + {"u=r,g=wx,o=rw", "341",}, + {"u=r,g=wx,o=rx", "342",}, + {"u=r,g=wx,o=r", "343",}, + {"u=r,g=wx,o=wx", "344",}, + {"u=r,g=wx,o=w", "345",}, + {"u=r,g=wx,o=x", "346",}, + {"u=r,g=wx,o=", "347",}, + {"u=r,g=w,o=rwx", "350",}, + {"u=r,g=w,o=rw", "351",}, + {"u=r,g=w,o=rx", "352",}, + {"u=r,g=w,o=r", "353",}, + {"u=r,g=w,o=wx", "354",}, + {"u=r,g=w,o=w", "355",}, + {"u=r,g=w,o=x", "356",}, + {"u=r,g=w,o=", "357",}, + {"u=r,g=x,o=rwx", "360",}, + {"u=r,g=x,o=rw", "361",}, + {"u=r,g=x,o=rx", "362",}, + {"u=r,g=x,o=r", "363",}, + {"u=r,g=x,o=wx", "364",}, + {"u=r,g=x,o=w", "365",}, + {"u=r,g=x,o=x", "366",}, + {"u=r,g=x,o=", "367",}, + {"u=r,g=,o=rwx", "370",}, + {"u=r,g=,o=rw", "371",}, + {"u=r,g=,o=rx", "372",}, + {"u=r,g=,o=r", "373",}, + {"u=r,g=,o=wx", "374",}, + {"u=r,g=,o=w", "375",}, + {"u=r,g=,o=x", "376",}, + {"u=r,g=,o=", "377",}, + {"u=wx,g=rwx,o=rwx", "400",}, + {"u=wx,g=rwx,o=rw", "401",}, + {"u=wx,g=rwx,o=rx", "402",}, + {"u=wx,g=rwx,o=r", "403",}, + {"u=wx,g=rwx,o=wx", "404",}, + {"u=wx,g=rwx,o=w", "405",}, + {"u=wx,g=rwx,o=x", "406",}, + {"u=wx,g=rwx,o=", "407",}, + {"u=wx,g=rw,o=rwx", "410",}, + {"u=wx,g=rw,o=rw", "411",}, + {"u=wx,g=rw,o=rx", "412",}, + {"u=wx,g=rw,o=r", "413",}, + {"u=wx,g=rw,o=wx", "414",}, + {"u=wx,g=rw,o=w", "415",}, + {"u=wx,g=rw,o=x", "416",}, + {"u=wx,g=rw,o=", "417",}, + {"u=wx,g=rx,o=rwx", "420",}, + {"u=wx,g=rx,o=rw", "421",}, + {"u=wx,g=rx,o=rx", "422",}, + {"u=wx,g=rx,o=r", "423",}, + {"u=wx,g=rx,o=wx", "424",}, + {"u=wx,g=rx,o=w", "425",}, + {"u=wx,g=rx,o=x", "426",}, + {"u=wx,g=rx,o=", "427",}, + {"u=wx,g=r,o=rwx", "430",}, + {"u=wx,g=r,o=rw", "431",}, + {"u=wx,g=r,o=rx", "432",}, + {"u=wx,g=r,o=r", "433",}, + {"u=wx,g=r,o=wx", "434",}, + {"u=wx,g=r,o=w", "435",}, + {"u=wx,g=r,o=x", "436",}, + {"u=wx,g=r,o=", "437",}, + {"u=wx,g=wx,o=rwx", "440",}, + {"u=wx,g=wx,o=rw", "441",}, + {"u=wx,g=wx,o=rx", "442",}, + {"u=wx,g=wx,o=r", "443",}, + {"u=wx,g=wx,o=wx", "444",}, + {"u=wx,g=wx,o=w", "445",}, + {"u=wx,g=wx,o=x", "446",}, + {"u=wx,g=wx,o=", "447",}, + {"u=wx,g=w,o=rwx", "450",}, + {"u=wx,g=w,o=rw", "451",}, + {"u=wx,g=w,o=rx", "452",}, + {"u=wx,g=w,o=r", "453",}, + {"u=wx,g=w,o=wx", "454",}, + {"u=wx,g=w,o=w", "455",}, + {"u=wx,g=w,o=x", "456",}, + {"u=wx,g=w,o=", "457",}, + {"u=wx,g=x,o=rwx", "460",}, + {"u=wx,g=x,o=rw", "461",}, + {"u=wx,g=x,o=rx", "462",}, + {"u=wx,g=x,o=r", "463",}, + {"u=wx,g=x,o=wx", "464",}, + {"u=wx,g=x,o=w", "465",}, + {"u=wx,g=x,o=x", "466",}, + {"u=wx,g=x,o=", "467",}, + {"u=wx,g=,o=rwx", "470",}, + {"u=wx,g=,o=rw", "471",}, + {"u=wx,g=,o=rx", "472",}, + {"u=wx,g=,o=r", "473",}, + {"u=wx,g=,o=wx", "474",}, + {"u=wx,g=,o=w", "475",}, + {"u=wx,g=,o=x", "476",}, + {"u=wx,g=,o=", "477",}, + {"u=w,g=rwx,o=rwx", "500",}, + {"u=w,g=rwx,o=rw", "501",}, + {"u=w,g=rwx,o=rx", "502",}, + {"u=w,g=rwx,o=r", "503",}, + {"u=w,g=rwx,o=wx", "504",}, + {"u=w,g=rwx,o=w", "505",}, + {"u=w,g=rwx,o=x", "506",}, + {"u=w,g=rwx,o=", "507",}, + {"u=w,g=rw,o=rwx", "510",}, + {"u=w,g=rw,o=rw", "511",}, + {"u=w,g=rw,o=rx", "512",}, + {"u=w,g=rw,o=r", "513",}, + {"u=w,g=rw,o=wx", "514",}, + {"u=w,g=rw,o=w", "515",}, + {"u=w,g=rw,o=x", "516",}, + {"u=w,g=rw,o=", "517",}, + {"u=w,g=rx,o=rwx", "520",}, + {"u=w,g=rx,o=rw", "521",}, + {"u=w,g=rx,o=rx", "522",}, + {"u=w,g=rx,o=r", "523",}, + {"u=w,g=rx,o=wx", "524",}, + {"u=w,g=rx,o=w", "525",}, + {"u=w,g=rx,o=x", "526",}, + {"u=w,g=rx,o=", "527",}, + {"u=w,g=r,o=rwx", "530",}, + {"u=w,g=r,o=rw", "531",}, + {"u=w,g=r,o=rx", "532",}, + {"u=w,g=r,o=r", "533",}, + {"u=w,g=r,o=wx", "534",}, + {"u=w,g=r,o=w", "535",}, + {"u=w,g=r,o=x", "536",}, + {"u=w,g=r,o=", "537",}, + {"u=w,g=wx,o=rwx", "540",}, + {"u=w,g=wx,o=rw", "541",}, + {"u=w,g=wx,o=rx", "542",}, + {"u=w,g=wx,o=r", "543",}, + {"u=w,g=wx,o=wx", "544",}, + {"u=w,g=wx,o=w", "545",}, + {"u=w,g=wx,o=x", "546",}, + {"u=w,g=wx,o=", "547",}, + {"u=w,g=w,o=rwx", "550",}, + {"u=w,g=w,o=rw", "551",}, + {"u=w,g=w,o=rx", "552",}, + {"u=w,g=w,o=r", "553",}, + {"u=w,g=w,o=wx", "554",}, + {"u=w,g=w,o=w", "555",}, + {"u=w,g=w,o=x", "556",}, + {"u=w,g=w,o=", "557",}, + {"u=w,g=x,o=rwx", "560",}, + {"u=w,g=x,o=rw", "561",}, + {"u=w,g=x,o=rx", "562",}, + {"u=w,g=x,o=r", "563",}, + {"u=w,g=x,o=wx", "564",}, + {"u=w,g=x,o=w", "565",}, + {"u=w,g=x,o=x", "566",}, + {"u=w,g=x,o=", "567",}, + {"u=w,g=,o=rwx", "570",}, + {"u=w,g=,o=rw", "571",}, + {"u=w,g=,o=rx", "572",}, + {"u=w,g=,o=r", "573",}, + {"u=w,g=,o=wx", "574",}, + {"u=w,g=,o=w", "575",}, + {"u=w,g=,o=x", "576",}, + {"u=w,g=,o=", "577",}, + {"u=x,g=rwx,o=rwx", "600",}, + {"u=x,g=rwx,o=rw", "601",}, + {"u=x,g=rwx,o=rx", "602",}, + {"u=x,g=rwx,o=r", "603",}, + {"u=x,g=rwx,o=wx", "604",}, + {"u=x,g=rwx,o=w", "605",}, + {"u=x,g=rwx,o=x", "606",}, + {"u=x,g=rwx,o=", "607",}, + {"u=x,g=rw,o=rwx", "610",}, + {"u=x,g=rw,o=rw", "611",}, + {"u=x,g=rw,o=rx", "612",}, + {"u=x,g=rw,o=r", "613",}, + {"u=x,g=rw,o=wx", "614",}, + {"u=x,g=rw,o=w", "615",}, + {"u=x,g=rw,o=x", "616",}, + {"u=x,g=rw,o=", "617",}, + {"u=x,g=rx,o=rwx", "620",}, + {"u=x,g=rx,o=rw", "621",}, + {"u=x,g=rx,o=rx", "622",}, + {"u=x,g=rx,o=r", "623",}, + {"u=x,g=rx,o=wx", "624",}, + {"u=x,g=rx,o=w", "625",}, + {"u=x,g=rx,o=x", "626",}, + {"u=x,g=rx,o=", "627",}, + {"u=x,g=r,o=rwx", "630",}, + {"u=x,g=r,o=rw", "631",}, + {"u=x,g=r,o=rx", "632",}, + {"u=x,g=r,o=r", "633",}, + {"u=x,g=r,o=wx", "634",}, + {"u=x,g=r,o=w", "635",}, + {"u=x,g=r,o=x", "636",}, + {"u=x,g=r,o=", "637",}, + {"u=x,g=wx,o=rwx", "640",}, + {"u=x,g=wx,o=rw", "641",}, + {"u=x,g=wx,o=rx", "642",}, + {"u=x,g=wx,o=r", "643",}, + {"u=x,g=wx,o=wx", "644",}, + {"u=x,g=wx,o=w", "645",}, + {"u=x,g=wx,o=x", "646",}, + {"u=x,g=wx,o=", "647",}, + {"u=x,g=w,o=rwx", "650",}, + {"u=x,g=w,o=rw", "651",}, + {"u=x,g=w,o=rx", "652",}, + {"u=x,g=w,o=r", "653",}, + {"u=x,g=w,o=wx", "654",}, + {"u=x,g=w,o=w", "655",}, + {"u=x,g=w,o=x", "656",}, + {"u=x,g=w,o=", "657",}, + {"u=x,g=x,o=rwx", "660",}, + {"u=x,g=x,o=rw", "661",}, + {"u=x,g=x,o=rx", "662",}, + {"u=x,g=x,o=r", "663",}, + {"u=x,g=x,o=wx", "664",}, + {"u=x,g=x,o=w", "665",}, + {"u=x,g=x,o=x", "666",}, + {"u=x,g=x,o=", "667",}, + {"u=x,g=,o=rwx", "670",}, + {"u=x,g=,o=rw", "671",}, + {"u=x,g=,o=rx", "672",}, + {"u=x,g=,o=r", "673",}, + {"u=x,g=,o=wx", "674",}, + {"u=x,g=,o=w", "675",}, + {"u=x,g=,o=x", "676",}, + {"u=x,g=,o=", "677",}, + {"u=,g=rwx,o=rwx", "700",}, + {"u=,g=rwx,o=rw", "701",}, + {"u=,g=rwx,o=rx", "702",}, + {"u=,g=rwx,o=r", "703",}, + {"u=,g=rwx,o=wx", "704",}, + {"u=,g=rwx,o=w", "705",}, + {"u=,g=rwx,o=x", "706",}, + {"u=,g=rwx,o=", "707",}, + {"u=,g=rw,o=rwx", "710",}, + {"u=,g=rw,o=rw", "711",}, + {"u=,g=rw,o=rx", "712",}, + {"u=,g=rw,o=r", "713",}, + {"u=,g=rw,o=wx", "714",}, + {"u=,g=rw,o=w", "715",}, + {"u=,g=rw,o=x", "716",}, + {"u=,g=rw,o=", "717",}, + {"u=,g=rx,o=rwx", "720",}, + {"u=,g=rx,o=rw", "721",}, + {"u=,g=rx,o=rx", "722",}, + {"u=,g=rx,o=r", "723",}, + {"u=,g=rx,o=wx", "724",}, + {"u=,g=rx,o=w", "725",}, + {"u=,g=rx,o=x", "726",}, + {"u=,g=rx,o=", "727",}, + {"u=,g=r,o=rwx", "730",}, + {"u=,g=r,o=rw", "731",}, + {"u=,g=r,o=rx", "732",}, + {"u=,g=r,o=r", "733",}, + {"u=,g=r,o=wx", "734",}, + {"u=,g=r,o=w", "735",}, + {"u=,g=r,o=x", "736",}, + {"u=,g=r,o=", "737",}, + {"u=,g=wx,o=rwx", "740",}, + {"u=,g=wx,o=rw", "741",}, + {"u=,g=wx,o=rx", "742",}, + {"u=,g=wx,o=r", "743",}, + {"u=,g=wx,o=wx", "744",}, + {"u=,g=wx,o=w", "745",}, + {"u=,g=wx,o=x", "746",}, + {"u=,g=wx,o=", "747",}, + {"u=,g=w,o=rwx", "750",}, + {"u=,g=w,o=rw", "751",}, + {"u=,g=w,o=rx", "752",}, + {"u=,g=w,o=r", "753",}, + {"u=,g=w,o=wx", "754",}, + {"u=,g=w,o=w", "755",}, + {"u=,g=w,o=x", "756",}, + {"u=,g=w,o=", "757",}, + {"u=,g=x,o=rwx", "760",}, + {"u=,g=x,o=rw", "761",}, + {"u=,g=x,o=rx", "762",}, + {"u=,g=x,o=r", "763",}, + {"u=,g=x,o=wx", "764",}, + {"u=,g=x,o=w", "765",}, + {"u=,g=x,o=x", "766",}, + {"u=,g=x,o=", "767",}, + {"u=,g=,o=rwx", "770",}, + {"u=,g=,o=rw", "771",}, + {"u=,g=,o=rx", "772",}, + {"u=,g=,o=r", "773",}, + {"u=,g=,o=wx", "774",}, + {"u=,g=,o=w", "775",}, + {"u=,g=,o=x", "776",}, + {"u=,g=,o=", "777"} + }; for(int i = 0; i < symbolic.length; i += 2) { - conf.set(FsPermission.UMASK_LABEL, symbolic[i]); - short val = Short.valueOf(symbolic[i + 1], 8); + conf.set(FsPermission.UMASK_LABEL, symbolic[i][0]); + short val = Short.valueOf(symbolic[i][1], 8); assertEquals(val, FsPermission.getUMask(conf).toShort()); } }