Imported Upstream version 2.2.52
[platform/upstream/acl.git] / test / misc.test
1 Pretty comprehensive ACL tests.
2  
3 This must be run on a filesystem with ACL support. Also, you will need
4 two dummy users (bin and daemon) and a dummy group (daemon).
5  
6         $ rm -f f
7         $ umask 027
8         $ touch f
9           
10 Only change a base ACL:
11         $ setfacl -m u::r f
12         $ setfacl -m u::rw,u:bin:rw f
13         $ ls -dl f | awk '{print $1}'
14         > -rw-rw----+
15         
16         $ getfacl --omit-header f
17         > user::rw-
18         > user:bin:rw-
19         > group::r--
20         > mask::rw-
21         > other::---
22         > 
23
24         $ rm f
25         $ umask 022
26         $ touch f
27         $ setfacl -m u:bin:rw f
28         $ ls -dl f | awk '{print $1}'
29         > -rw-rw-r--+
30
31         $ getfacl --omit-header f
32         > user::rw-
33         > user:bin:rw-
34         > group::r--
35         > mask::rw-
36         > other::r--
37         > 
38
39         $rm f
40         $ umask 027
41         $ mkdir d
42         $ setfacl -m u:bin:rwx d
43         $ ls -dl d | awk '{print $1}'
44         > drwxrwx---+
45
46         $ getfacl --omit-header d
47         > user::rwx
48         > user:bin:rwx
49         > group::r-x
50         > mask::rwx
51         > other::---
52         > 
53
54         $ rmdir d
55         $ umask 022
56         $ mkdir d
57         $ setfacl -m u:bin:rwx d
58         $ ls -dl d | awk '{print $1}'
59         > drwxrwxr-x+
60
61         $ getfacl --omit-header d
62         > user::rwx
63         > user:bin:rwx
64         > group::r-x
65         > mask::rwx
66         > other::r-x
67         > 
68
69         $ rmdir d
70          
71
72 Multiple users
73          
74         $ umask 022
75         $ touch f
76         $ setfacl -m u:bin:rw,u:daemon:r f
77         $ ls -dl f | awk '{print $1}'
78         > -rw-rw-r--+
79
80         $ getfacl --omit-header f
81         > user::rw-
82         > user:bin:rw-
83         > user:daemon:r--
84         > group::r--
85         > mask::rw-
86         > other::r--
87         > 
88          
89 Multiple groups
90          
91         $ setfacl -m g:users:rw,g:daemon:r f
92         $ ls -dl f | awk '{print $1}'
93         > -rw-rw-r--+
94
95         $ getfacl --omit-header f
96         > user::rw-
97         > user:bin:rw-
98         > user:daemon:r--
99         > group::r--
100         > group:daemon:r--
101         > group:users:rw-
102         > mask::rw-
103         > other::r--
104         > 
105          
106 Remove one group
107          
108         $ setfacl -x g:users f
109         $ ls -dl f | awk '{print $1}'
110         > -rw-rw-r--+
111
112         $ getfacl --omit-header f
113         > user::rw-
114         > user:bin:rw-
115         > user:daemon:r--
116         > group::r--
117         > group:daemon:r--
118         > mask::rw-
119         > other::r--
120         > 
121          
122 Remove one user
123          
124         $ setfacl -x u:daemon f
125         $ ls -dl f | awk '{print $1}'
126         > -rw-rw-r--+
127
128         $ getfacl --omit-header f
129         > user::rw-
130         > user:bin:rw-
131         > group::r--
132         > group:daemon:r--
133         > mask::rw-
134         > other::r--
135         > 
136
137         $ rm f
138          
139 Default ACL
140          
141         $ umask 027
142         $ mkdir d
143         $ setfacl -m u:bin:rwx,u:daemon:rw,d:u:bin:rwx,d:m:rx d
144         $ ls -dl d | awk '{print $1}'
145         > drwxrwx---+
146
147         $ getfacl --omit-header d
148         > user::rwx
149         > user:bin:rwx
150         > user:daemon:rw-
151         > group::r-x
152         > mask::rwx
153         > other::---
154         > default:user::rwx
155         > default:user:bin:rwx  #effective:r-x
156         > default:group::r-x
157         > default:mask::r-x
158         > default:other::---
159         > 
160          
161 Umask now ignored?
162  
163         $ umask 027
164         $ touch d/f
165         $ ls -dl d/f | awk '{print $1}'
166         > -rw-r-----+
167
168         $ getfacl --omit-header d/f
169         > user::rw-
170         > user:bin:rwx  #effective:r--
171         > group::r-x    #effective:r--
172         > mask::r--
173         > other::---
174         > 
175
176         $ rm d/f
177         $ umask 022
178         $ touch d/f
179         $ ls -dl d/f | awk '{print $1}'
180         > -rw-r-----+
181
182         $ getfacl --omit-header d/f
183         > user::rw-
184         > user:bin:rwx  #effective:r--
185         > group::r-x    #effective:r--
186         > mask::r--
187         > other::---
188         > 
189
190         $ rm d/f
191          
192 Default ACL copying
193  
194         $ umask 000
195         $ mkdir d/d
196         $ ls -dl d/d | awk '{print $1}'
197         > drwxr-x---+
198
199         $ getfacl --omit-header d/d
200         > user::rwx
201         > user:bin:rwx  #effective:r-x
202         > group::r-x
203         > mask::r-x
204         > other::---
205         > default:user::rwx
206         > default:user:bin:rwx  #effective:r-x
207         > default:group::r-x
208         > default:mask::r-x
209         > default:other::---
210         > 
211
212         $ rmdir d/d
213         $ umask 022
214         $ mkdir d/d
215         $ ls -dl d/d | awk '{print $1}'
216         > drwxr-x---+
217
218         $ getfacl --omit-header d/d
219         > user::rwx
220         > user:bin:rwx  #effective:r-x
221         > group::r-x
222         > mask::r-x
223         > other::---
224         > default:user::rwx
225         > default:user:bin:rwx  #effective:r-x
226         > default:group::r-x
227         > default:mask::r-x
228         > default:other::---
229         > 
230          
231 Add some users and groups
232  
233         $ setfacl -nm u:daemon:rx,d:u:daemon:rx,g:users:rx,g:daemon:rwx d/d
234         $ ls -dl d/d | awk '{print $1}'
235         > drwxr-x---+
236
237         $ getfacl --omit-header d/d
238         > user::rwx
239         > user:bin:rwx  #effective:r-x
240         > user:daemon:r-x
241         > group::r-x
242         > group:daemon:rwx      #effective:r-x
243         > group:users:r-x
244         > mask::r-x
245         > other::---
246         > default:user::rwx
247         > default:user:bin:rwx  #effective:r-x
248         > default:user:daemon:r-x
249         > default:group::r-x
250         > default:mask::r-x
251         > default:other::---
252         > 
253          
254 Symlink in directory with default ACL?
255          
256         $ ln -s d d/l
257         $ ls -dl d/l | awk '{print $1}' | sed 's/\.$//g'
258         > lrwxrwxrwx
259
260         $ ls -dl -L d/l | awk '{print $1}'
261         > drwxr-x---+
262
263         $ getfacl --omit-header d/l
264         > user::rwx
265         > user:bin:rwx  #effective:r-x
266         > user:daemon:r-x
267         > group::r-x
268         > group:daemon:rwx      #effective:r-x
269         > group:users:r-x
270         > mask::r-x
271         > other::---
272         > default:user::rwx
273         > default:user:bin:rwx  #effective:r-x
274         > default:user:daemon:r-x
275         > default:group::r-x
276         > default:mask::r-x
277         > default:other::---
278         > 
279
280         $ rm d/l
281          
282 Does mask manipulation work?
283          
284         $ setfacl -m g:daemon:rx,u:bin:rx d/d
285         $ ls -dl d/d | awk '{print $1}'
286         > drwxr-x---+
287
288         $ getfacl --omit-header d/d
289         > user::rwx
290         > user:bin:r-x
291         > user:daemon:r-x
292         > group::r-x
293         > group:daemon:r-x
294         > group:users:r-x
295         > mask::r-x
296         > other::---
297         > default:user::rwx
298         > default:user:bin:rwx  #effective:r-x
299         > default:user:daemon:r-x
300         > default:group::r-x
301         > default:mask::r-x
302         > default:other::---
303         > 
304
305         $ setfacl -m d:u:bin:rwx d/d
306         $ ls -dl d/d | awk '{print $1}'
307         > drwxr-x---+
308
309         $ getfacl --omit-header d/d
310         > user::rwx
311         > user:bin:r-x
312         > user:daemon:r-x
313         > group::r-x
314         > group:daemon:r-x
315         > group:users:r-x
316         > mask::r-x
317         > other::---
318         > default:user::rwx
319         > default:user:bin:rwx
320         > default:user:daemon:r-x
321         > default:group::r-x
322         > default:mask::rwx
323         > default:other::---
324         > 
325
326         $ rmdir d/d
327          
328 Remove the default ACL
329          
330         $ setfacl -k d
331         $ ls -dl d | awk '{print $1}'
332         > drwxrwx---+
333
334         $ getfacl --omit-header d
335         > user::rwx
336         > user:bin:rwx
337         > user:daemon:rw-
338         > group::r-x
339         > mask::rwx
340         > other::---
341         > 
342          
343 Reset to base entries
344          
345         $ setfacl -b d
346         $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
347         > drwxr-x---
348
349         $ getfacl --omit-header d
350         > user::rwx
351         > group::r-x
352         > other::---
353         > 
354          
355 Now, chmod should change the group_obj entry
356          
357         $ chmod 775 d
358         $ ls -dl d | awk '{print $1}' | sed 's/\.$//g'
359         > drwxrwxr-x
360         
361         $ getfacl --omit-header d
362         > user::rwx
363         > group::rwx
364         > other::r-x
365         > 
366
367         $ rmdir d
368         $ umask 002
369         $ mkdir d
370         $ setfacl -m u:daemon:rwx,u:bin:rx,d:u:daemon:rwx,d:u:bin:rx d
371         $ ls -dl d | awk '{print $1}'
372         > drwxrwxr-x+
373
374         $ getfacl --omit-header d
375         > user::rwx
376         > user:bin:r-x
377         > user:daemon:rwx
378         > group::rwx
379         > mask::rwx
380         > other::r-x
381         > default:user::rwx
382         > default:user:bin:r-x
383         > default:user:daemon:rwx
384         > default:group::rwx
385         > default:mask::rwx
386         > default:other::r-x
387         > 
388
389         $ chmod 750 d
390         $ ls -dl d | awk '{print $1}'
391         > drwxr-x---+
392
393         $ getfacl --omit-header d
394         > user::rwx
395         > user:bin:r-x
396         > user:daemon:rwx       #effective:r-x
397         > group::rwx    #effective:r-x
398         > mask::r-x
399         > other::---
400         > default:user::rwx
401         > default:user:bin:r-x
402         > default:user:daemon:rwx
403         > default:group::rwx
404         > default:mask::rwx
405         > default:other::r-x
406         > 
407
408         $ chmod 750 d
409         $ ls -dl d | awk '{print $1}'
410         > drwxr-x---+
411
412         $ getfacl --omit-header d
413         > user::rwx
414         > user:bin:r-x
415         > user:daemon:rwx       #effective:r-x
416         > group::rwx    #effective:r-x
417         > mask::r-x
418         > other::---
419         > default:user::rwx
420         > default:user:bin:r-x
421         > default:user:daemon:rwx
422         > default:group::rwx
423         > default:mask::rwx
424         > default:other::r-x
425         > 
426
427         $ rmdir d
428
429 Dangling symlink test http://savannah.nongnu.org/bugs/?28131
430
431         $ mkdir d
432         $ ln -s d/a d/b
433         $ getfacl -R d
434         > # file: d
435         > # owner: %TUSER
436         > # group: %TGROUP
437         > user::rwx
438         > group::rwx
439         > other::r-x
440         > 
441         $ setfacl -R -m u:bin:rw d
442         $ getfacl -RL d
443         > getfacl: d/b: No such file or directory
444         > # file: d
445         > # owner: %TUSER
446         > # group: %TGROUP
447         > user::rwx
448         > user:bin:rw-
449         > group::rwx
450         > mask::rwx
451         > other::r-x
452         > 
453         $ setfacl -RL -m u:bin:rw d
454         > setfacl: d/b: No such file or directory
455         $ rm -R d
456
457 Malformed restore file
458
459         $ echo "# owner: root" > f
460         $ setfacl --restore=f 2>&1
461         >setfacl: f: No filename found in line 0, aborting