HADOOP-6710. Symbolic umask for file creation is not conformant with posix. Contributed by Suresh Srinivas.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@937577 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Suresh Srinivas 2010-04-24 02:04:20 +00:00
parent 67c006c322
commit 27a9fce10d
5 changed files with 555 additions and 9 deletions

View File

@ -343,6 +343,9 @@ Trunk (unreleased changes)
HADOOP-6690. FilterFileSystem correctly handles setTimes call. HADOOP-6690. FilterFileSystem correctly handles setTimes call.
(Rodrigo Schmidt via dhruba) (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. HADOOP-6719. Insert all missing methods in FilterFs.
(Rodrigo Schmidt via dhruba) (Rodrigo Schmidt via dhruba)

View File

@ -199,7 +199,20 @@ public class FsPermission implements Writable {
public static final int DEFAULT_UMASK = public static final int DEFAULT_UMASK =
CommonConfigurationKeys.FS_PERMISSIONS_UMASK_DEFAULT; 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) { public static FsPermission getUMask(Configuration conf) {
int umask = DEFAULT_UMASK; int umask = DEFAULT_UMASK;

View File

@ -26,6 +26,7 @@ import java.util.regex.Pattern;
* UmaskParser and ChmodParser classes. * UmaskParser and ChmodParser classes.
*/ */
class PermissionParser { class PermissionParser {
protected boolean symbolic = false;
protected short userMode; protected short userMode;
protected short groupMode; protected short groupMode;
protected short othersMode; protected short othersMode;
@ -140,6 +141,7 @@ class PermissionParser {
commaSeperated = matcher.group(4).contains(","); commaSeperated = matcher.group(4).contains(",");
} }
symbolic = true;
} }
private void applyOctalPattern(String modeStr, Matcher matcher) { private void applyOctalPattern(String modeStr, Matcher matcher) {

View File

@ -30,7 +30,7 @@ class UmaskParser extends PermissionParser {
private static Pattern chmodOctalPattern = private static Pattern chmodOctalPattern =
Pattern.compile("^\\s*[+]?()([0-7]{3})\\s*$"); // no leading 1 for sticky bit Pattern.compile("^\\s*[+]?()([0-7]{3})\\s*$"); // no leading 1 for sticky bit
private static Pattern umaskSymbolicPattern = /* not allow X or t */ 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; final short umaskMode;
public UmaskParser(String modeStr) throws IllegalArgumentException { public UmaskParser(String modeStr) throws IllegalArgumentException {
@ -39,7 +39,21 @@ class UmaskParser extends PermissionParser {
umaskMode = (short)combineModes(0, false); 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() { public short getUMask() {
if (symbolic) {
// Return the complement of octal equivalent of umask that was computed
return (short) (~umaskMode & 0777);
}
return umaskMode; return umaskMode;
} }
} }

View File

@ -133,17 +133,531 @@ public class TestFsPermission extends TestCase {
} }
} }
public void TestSymbolicUmasks() { public void testSymbolicUmasks() {
Configuration conf = new Configuration(); Configuration conf = new Configuration();
// Test some symbolic settings Setting Octal result // Test some symbolic to octal settings
String [] symbolic = new String [] { "a+rw", "666", // Symbolic umask list is generated in linux shell using by the command:
"u=x,g=r,o=w", "142", // umask 0; umask <octal number>; umask -S
"u=x", "100" }; 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) { for(int i = 0; i < symbolic.length; i += 2) {
conf.set(FsPermission.UMASK_LABEL, symbolic[i]); conf.set(FsPermission.UMASK_LABEL, symbolic[i][0]);
short val = Short.valueOf(symbolic[i + 1], 8); short val = Short.valueOf(symbolic[i][1], 8);
assertEquals(val, FsPermission.getUMask(conf).toShort()); assertEquals(val, FsPermission.getUMask(conf).toShort());
} }
} }