From 3069df75513180a5b56130a7e05c6e339ab0a66a Mon Sep 17 00:00:00 2001 From: Chris Douglas Date: Thu, 1 Sep 2016 11:32:26 -0700 Subject: [PATCH] FsPermission string constructor does not recognize sticky bit. Contributed by Atul Sikaria --- .../hadoop/fs/permission/FsPermission.java | 2 +- .../hadoop/fs/permission/RawParser.java | 44 + .../fs/permission/TestFsPermission.java | 1061 +++++++++-------- 3 files changed, 585 insertions(+), 522 deletions(-) create mode 100644 hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/RawParser.java diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/FsPermission.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/FsPermission.java index b535fd6941d..78255bbdd90 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/FsPermission.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/FsPermission.java @@ -103,7 +103,7 @@ public class FsPermission implements Writable { * @throws IllegalArgumentException if mode is invalid */ public FsPermission(String mode) { - this(new UmaskParser(mode).getUMask()); + this(new RawParser(mode).getPermission()); } /** Return user {@link FsAction}. */ diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/RawParser.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/RawParser.java new file mode 100644 index 00000000000..3bbe9cb3929 --- /dev/null +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/permission/RawParser.java @@ -0,0 +1,44 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.fs.permission; + +import java.util.regex.Pattern; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; + +@InterfaceAudience.Private +@InterfaceStability.Unstable +class RawParser extends PermissionParser { + private static Pattern rawOctalPattern = + Pattern.compile("^\\s*([01]?)([0-7]{3})\\s*$"); + private static Pattern rawNormalPattern = + Pattern.compile("\\G\\s*([ugoa]*)([+=-]+)([rwxt]*)([,\\s]*)\\s*"); + + private short permission; + + public RawParser(String modeStr) throws IllegalArgumentException { + super(modeStr, rawNormalPattern, rawOctalPattern); + permission = (short)combineModes(0, false); + } + + public short getPermission() { + return permission; + } + +} diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/permission/TestFsPermission.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/permission/TestFsPermission.java index 04dbe014714..6368a574868 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/permission/TestFsPermission.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/permission/TestFsPermission.java @@ -56,6 +56,8 @@ public class TestFsPermission extends TestCase { public void testConvertingPermissions() { for(short s = 0; s <= 01777; s++) { assertEquals(s, new FsPermission(s).toShort()); + // check string formats + assertEquals(s, new FsPermission(String.format("%03o", s)).toShort()); } short s = 0; @@ -75,6 +77,7 @@ public class TestFsPermission extends TestCase { } } } + assertEquals(02000, s); } public void testSpecialBitsToString() { @@ -129,6 +132,20 @@ public class TestFsPermission extends TestCase { } } + public void testSymbolicPermission() { + for (int i = 0; i < SYMBOLIC.length; ++i) { + short val = 0777; + val &= ~Short.valueOf(SYMBOLIC[i][1], 8); + assertEquals(val, new FsPermission(SYMBOLIC[i][0]).toShort()); + } + // add sticky bit to "other" when exec enabled + for (int i = 1; i < SYMBOLIC.length; i += 2) { + short val = 01777; + val &= ~Short.valueOf(SYMBOLIC[i][1], 8); + assertEquals(val, new FsPermission(SYMBOLIC[i][0] + "t").toShort()); + } + } + public void testUMaskParser() throws IOException { Configuration conf = new Configuration(); @@ -150,529 +167,13 @@ public class TestFsPermission extends TestCase { Configuration conf = new Configuration(); // 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][0]); - short val = Short.valueOf(symbolic[i][1], 8); + for (int i = 0; i < SYMBOLIC.length; ++i) { + conf.set(FsPermission.UMASK_LABEL, SYMBOLIC[i][0]); + short val = Short.valueOf(SYMBOLIC[i][1], 8); assertEquals(val, FsPermission.getUMask(conf).toShort()); } + conf.set(FsPermission.UMASK_LABEL, "a+rw"); + assertEquals(0111, FsPermission.getUMask(conf).toShort()); } public void testBadUmasks() { @@ -695,4 +196,522 @@ public class TestFsPermission extends TestCase { msg.contains(umask) && msg.contains("octal or symbolic"); } + + // Symbolic umask list is generated in linux shell using by the command: + // umask 0; umask ; umask -S + static final String[][] SYMBOLIC = new String[][] { + {"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"} + }; + }