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?
254 # Need to remove trailing '.' when SELinux is enabled
257 $ ls -dl d/l | awk '{ sub(/\\.$/, "", $1); print $1 }'
260 $ ls -dl -L d/l | awk '{print $1}'
263 # XXX:there is an issue with getfacl dealing symbol link
264 # $ getfacl --omit-header d/l
266 $ getfacl --omit-header l
268 > user:bin:rwx #effective:r-x
271 > group:daemon:rwx #effective:r-x
276 > default:user:bin:rwx #effective:r-x
277 > default:user:daemon:r-x
287 Does mask manipulation work?
289 $ setfacl -m g:daemon:rx,u:bin:rx d/d
290 $ ls -dl d/d | awk '{print $1}'
293 $ getfacl --omit-header d/d
303 > default:user:bin:rwx #effective:r-x
304 > default:user:daemon:r-x
310 $ setfacl -m d:u:bin:rwx d/d
311 $ ls -dl d/d | awk '{print $1}'
314 $ getfacl --omit-header d/d
324 > default:user:bin:rwx
325 > default:user:daemon:r-x
333 Remove the default ACL
336 $ ls -dl d | awk '{print $1}'
339 $ getfacl --omit-header d
348 Reset to base entries
351 $ ls -dl d | awk '{sub(/\\./, "", $1); print $1}'
354 $ getfacl --omit-header d
360 Now, chmod should change the group_obj entry
363 $ ls -dl d | awk '{sub(/\\./, "", $1); print $1}'
366 $ getfacl --omit-header 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}'
379 $ getfacl --omit-header d
387 > default:user:bin:r-x
388 > default:user:daemon:rwx
395 $ ls -dl d | awk '{print $1}'
398 $ getfacl --omit-header d
401 > user:daemon:rwx #effective:r-x
402 > group::rwx #effective:r-x
406 > default:user:bin:r-x
407 > default:user:daemon:rwx
414 $ ls -dl d | awk '{print $1}'
417 $ getfacl --omit-header d
420 > user:daemon:rwx #effective:r-x
421 > group::rwx #effective:r-x
425 > default:user:bin:r-x
426 > default:user:daemon:rwx