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