1 Pretty comprehensive ACL tests.
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).
9 Only change a base ACL:
11 $ setfacl -m u::rw,u:bin:rw f
12 $ ls -dl f | awk '{print $1}'
15 $ getfacl --omit-header f
26 $ setfacl -m u:bin:rw f
27 $ ls -dl f | awk '{print $1}'
30 $ getfacl --omit-header f
41 $ setfacl -m u:bin:rwx d
42 $ ls -dl d | awk '{print $1}'
45 $ getfacl --omit-header d
56 $ setfacl -m u:bin:rwx d
57 $ ls -dl d | awk '{print $1}'
60 $ getfacl --omit-header d
75 $ setfacl -m u:bin:rw,u:daemon:r f
76 $ ls -dl f | awk '{print $1}'
79 $ getfacl --omit-header f
90 $ setfacl -m g:users:rw,g:daemon:r f
91 $ ls -dl f | awk '{print $1}'
94 $ getfacl --omit-header f
107 $ setfacl -x g:users f
108 $ ls -dl f | awk '{print $1}'
111 $ getfacl --omit-header f
123 $ setfacl -x u:daemon f
124 $ ls -dl f | awk '{print $1}'
127 $ getfacl --omit-header f
142 $ setfacl -m u:bin:rwx,u:daemon:rw,d:u:bin:rwx,d:m:rx d
143 $ ls -dl d | awk '{print $1}'
146 $ getfacl --omit-header d
154 > default:user:bin:rwx #effective:r-x
164 $ ls -dl d/f | awk '{print $1}'
167 $ getfacl --omit-header d/f
169 > user:bin:rwx #effective:r--
170 > group::r-x #effective:r--
178 $ ls -dl d/f | awk '{print $1}'
181 $ getfacl --omit-header d/f
183 > user:bin:rwx #effective:r--
184 > group::r-x #effective:r--
195 $ ls -dl d/d | awk '{print $1}'
198 $ getfacl --omit-header d/d
200 > user:bin:rwx #effective:r-x
205 > default:user:bin:rwx #effective:r-x
214 $ ls -dl d/d | awk '{print $1}'
217 $ getfacl --omit-header d/d
219 > user:bin:rwx #effective:r-x
224 > default:user:bin:rwx #effective:r-x
230 Add some users and groups
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}'
236 $ getfacl --omit-header d/d
238 > user:bin:rwx #effective:r-x
241 > group:daemon:rwx #effective:r-x
246 > default:user:bin:rwx #effective:r-x
247 > default:user:daemon:r-x
253 Symlink in directory with default ACL?
256 $ ls -dl d/l | awk '{print $1}'
259 $ ls -dl -L d/l | awk '{print $1}'
262 $ getfacl --omit-header d/l
264 > user:bin:rwx #effective:r-x
267 > group:daemon:rwx #effective:r-x
272 > default:user:bin:rwx #effective:r-x
273 > default:user:daemon:r-x
281 Does mask manipulation work?
283 $ setfacl -m g:daemon:rx,u:bin:rx d/d
284 $ ls -dl d/d | awk '{print $1}'
287 $ getfacl --omit-header d/d
297 > default:user:bin:rwx #effective:r-x
298 > default:user:daemon:r-x
304 $ setfacl -m d:u:bin:rwx d/d
305 $ ls -dl d/d | awk '{print $1}'
308 $ getfacl --omit-header d/d
318 > default:user:bin:rwx
319 > default:user:daemon:r-x
327 Remove the default ACL
330 $ ls -dl d | awk '{print $1}'
333 $ getfacl --omit-header d
342 Reset to base entries
345 $ ls -dl d | awk '{print $1}'
348 $ getfacl --omit-header d
354 Now, chmod should change the group_obj entry
357 $ ls -dl d | awk '{print $1}'
360 $ getfacl --omit-header d
369 $ setfacl -m u:daemon:rwx,u:bin:rx,d:u:daemon:rwx,d:u:bin:rx d
370 $ ls -dl d | awk '{print $1}'
373 $ getfacl --omit-header d
381 > default:user:bin:r-x
382 > default:user:daemon:rwx
389 $ ls -dl d | awk '{print $1}'
392 $ getfacl --omit-header d
395 > user:daemon:rwx #effective:r-x
396 > group::rwx #effective:r-x
400 > default:user:bin:r-x
401 > default:user:daemon:rwx
408 $ ls -dl d | awk '{print $1}'
411 $ getfacl --omit-header d
414 > user:daemon:rwx #effective:r-x
415 > group::rwx #effective:r-x
419 > default:user:bin:r-x
420 > default:user:daemon:rwx