1 | # Root directory: owned by tool, everyone has read access. |
---|
2 | expect 0 READ |
---|
3 | getperm / |
---|
4 | |
---|
5 | # Create directory: inherits from root. |
---|
6 | mkdir /dir |
---|
7 | expect 0 READ |
---|
8 | getperm /dir |
---|
9 | setid 1 |
---|
10 | expect 0 READ |
---|
11 | getperm /dir |
---|
12 | dir /dir |
---|
13 | expect write failed: Permission denied |
---|
14 | write /dir/test contents2 |
---|
15 | |
---|
16 | # Remove everyone's read access to directoy. |
---|
17 | setid 0 |
---|
18 | setperm /dir 0 NONE |
---|
19 | setid 1 |
---|
20 | expect dir failed: Permission denied |
---|
21 | dir /dir |
---|
22 | expect read failed: Permission denied |
---|
23 | read /dir/test create contents2 |
---|
24 | expect write failed: Permission denied |
---|
25 | write /dir/test contents2 |
---|
26 | |
---|
27 | # Grant everyone write access to directory. |
---|
28 | setid 0 |
---|
29 | setperm /dir 0 WRITE |
---|
30 | setid 1 |
---|
31 | expect getperm failed: Permission denied |
---|
32 | getperm /dir |
---|
33 | expect dir failed: Permission denied |
---|
34 | dir /dir |
---|
35 | write /dir/test contents |
---|
36 | setid 0 |
---|
37 | expect 1 WRITE |
---|
38 | getperm /dir/test |
---|
39 | setperm /dir/test 0 NONE |
---|
40 | expect contents |
---|
41 | read /dir/test |
---|
42 | |
---|
43 | # Grant everyone both read and write access. |
---|
44 | setperm /dir 0 READ/WRITE |
---|
45 | setid 1 |
---|
46 | expect 0 READ/WRITE |
---|
47 | getperm /dir |
---|
48 | expect test |
---|
49 | dir /dir |
---|
50 | write /dir/test2 contents |
---|
51 | expect contents |
---|
52 | read /dir/test2 |
---|
53 | setperm /dir/test2 1 NONE |
---|
54 | |
---|
55 | # Change so that user 1 owns it, noone else can do anything. |
---|
56 | setid 0 |
---|
57 | setperm /dir 1 NONE |
---|
58 | expect 1 NONE |
---|
59 | getperm /dir |
---|
60 | expect test |
---|
61 | expect test2 |
---|
62 | dir /dir |
---|
63 | write /dir/test3 contents |
---|
64 | |
---|
65 | # User 2 can do nothing. Can't even tell if file exists. |
---|
66 | setid 2 |
---|
67 | expect setperm failed: Permission denied |
---|
68 | setperm /dir 2 NONE |
---|
69 | expect getperm failed: Permission denied |
---|
70 | getperm /dir |
---|
71 | expect dir failed: Permission denied |
---|
72 | dir /dir |
---|
73 | expect read failed: Permission denied |
---|
74 | read /dir/test |
---|
75 | expect read failed: Permission denied |
---|
76 | read /dir/test2 |
---|
77 | expect read failed: Permission denied |
---|
78 | read /dir/test3 |
---|
79 | expect read failed: Permission denied |
---|
80 | read /dir/test4 |
---|
81 | expect write failed: Permission denied |
---|
82 | write /dir/test contents |
---|
83 | expect write failed: Permission denied |
---|
84 | write /dir/test4 contents |
---|
85 | |
---|
86 | # Tools can always access things. |
---|
87 | setid 0 |
---|
88 | expect 1 NONE |
---|
89 | getperm /dir |
---|
90 | expect test |
---|
91 | expect test2 |
---|
92 | expect test3 |
---|
93 | dir /dir |
---|
94 | write /dir/test4 contents |
---|
95 | |
---|
96 | # Inherited by child. |
---|
97 | mkdir /dir/subdir |
---|
98 | expect 1 NONE |
---|
99 | getperm /dir/subdir |
---|
100 | write /dir/subfile contents |
---|
101 | expect 1 NONE |
---|
102 | getperm /dir/subfile |
---|
103 | |
---|
104 | # But for domains, they own it. |
---|
105 | setperm /dir/subdir 2 READ/WRITE |
---|
106 | expect 2 READ/WRITE |
---|
107 | getperm /dir/subdir |
---|
108 | setid 3 |
---|
109 | write /dir/subdir/subfile contents |
---|
110 | expect 3 READ/WRITE |
---|
111 | getperm /dir/subdir/subfile |
---|
112 | |
---|
113 | # Inheritence works through multiple directories, too. |
---|
114 | write /dir/subdir/1/2/3/4 contents |
---|
115 | expect 3 READ/WRITE |
---|
116 | getperm /dir/subdir/1/2/3/4 |
---|
117 | mkdir /dir/subdir/a/b/c/d |
---|
118 | expect 3 READ/WRITE |
---|
119 | getperm /dir/subdir/a/b/c/d |
---|