FS_LISTACL(1)
β¨ FS_LISTACL(1) β¨
okay bestie, welcome to the AFS Command Reference π this is fs_listacl, the little cutie whose whole job is showing you the access control lists. no cap.
πΈ NAME πΈ
fs_listacl β displays ACLs π
π¦ SYNOPSIS π¦
fs listacl [-path <dir/file path>+] [-id] [-if] [-cmd] [-help]
fs la [-p <dir/file path>+] [-id] [-if] [-cmd] [-h]
fs lista [-p <dir/file path>+] [-id] [-if] [-cmd] [-h]
three names, one queen. listacl, la, lista β she answers to all of them π
π DESCRIPTION π
The fs listacl command shows you the access control list (that's ACL, iykyk) that belongs to each file, directory, or symbolic link you point at. π«Ά
The element you name can live in the DFS filespace if whoever's running it is using the AFS/DFS Migration Toolkit Protocol Translator to get at DFS data (and yes, DFS does implement per-file ACLs, unlike some people π).
Wanna see the ACL of the directory you're literally standing in right now? Just leave off the -path argument. easy.
Wanna change an ACL? That's fs setacl. Wanna copy an ACL from one directory to another? That's fs copyacl. Wanna yeet stale entries out of an ACL? That's fs cleanacl. go off, use the right tool bestie π
π CAUTIONS π
this one's important, no skipping:
Putting a user or group on the "Negative rights" section of the ACL does not guarantee they get denied permissions β not if the "Normal rights" section already grants those permissions to members of the system:anyuser group. π
In that case, the user just has to run the unlog command and boom, they've got the permissions granted to system:anyuser. so like... negative rights said no but anyuser said yes. the audacity.
π OPTIONS π
-path <dir/file path>+β names each directory or file you want the ACL for. For AFS files, the output actually shows you the ACL from the file's parent directory (yes really, AFS is like that). DFS files do have their own ACL though, slay. Incomplete pathnames get interpreted relative to the current working directory, and fun fact: that's also the default value if you just... don't pass this argument at all. β¨-idβ shows the Initial Container ACL of each DFS directory. heads up: this one only works on DFS directories that are reached through the AFS/DFS Migration Toolkit Protocol Translator. π§-ifβ shows the Initial Object ACL of each DFS directory. same deal β only supported on DFS directories accessed via the AFS/DFS Migration Toolkit Protocol Translator. π§-cmdβ spits out anfs setaclcommand string you can use to recreate the ACL that's applied to the file, directory, or symbolic link you specified. it's giving "make me a copy, but as a command." π₯-helpβ prints the online help for this command. every other valid option just gets ignored when you do this. periodt.
π OUTPUT π
For each file, directory, or symbolic link, the first line of output reads exactly like this:
Access list for <directory> is
tiny note: if whoever ran it used shorthand in the pathname β like the period (".") for the current current directory β that shorthand sometimes shows up instead of the full pathname of the directory. so don't be confused when you see it, bestie. π
Then the "Normal rights" header shows up, followed by a list of users and groups who are granted the permissions, one pairing of user/group and permissions per line.
If negative permissions got assigned to anyone, those entries come after a "Negative rights" header. the format of the negative entries is the same as the ones in the "Normal rights" section β the only difference is that the user or group is denied rather than granted the permissions. π
AFS does not implement per-file ACLs, so for a file the command just shows you the ACL on its directory. and for a symbolic link? the output shows the ACL that applies to its target file or directory β not the ACL on the directory that houses the symbolic link. sneaky little shortcut, honestly iconic.
The permissions for AFS let whoever holds them do the thing:
a(administer) β change the entries on the ACL.d(delete) β remove files and subdirectories from the directory, or move them to other directories.i(insert) β add files or subdirectories to the directory by copying, moving, or creating.k(lock) β set read locks or write locks on the files in the directory.l(lookup) β list the files and subdirectories in the directory, stat the directory itself, and issue thefs listaclcommand to examine the directory's ACL.r(read) β read the contents of files in the directory; issue the"ls -l"command to stat the elements in the directory.w(write) β modify the contents of files in the directory, and issue the UNIXchmodcommand to change their mode bitsA,B,C,D,E,F,G,Hβ have no default meaning to the AFS server processes, but they're made available for applications to use in controlling access to the directory's contents in additional ways. the letters must be uppercase. π
For DFS files and directories the permissions are similar β with a few swaps you need to know about:
- the DFS
"x"(execute) permission replaces the AFS"l"(lookup) permission - DFS
"c"(control) replaces AFS"a"(administer) - and there is no DFS equivalent to the AFS
"k"(lock) permission
The meanings of the various permissions also differ slightly, and DFS does not implement negative permissions. for the full tea on DFS permissions, go check the DFS documentation. π
π EXAMPLES π
First one: this command shows the ACL on the home directory of the user "pat" (that's the current working directory), and on its "private" subdirectory.
% fs listacl -path . private
Access list for . is
Normal rights:
system:authuser rl
pat rlidwka
pat:friends rlid
Negative rights:
smith rlidwka
Access list for private is
Normal rights:
pat rlidwka
Second one: this command generates the fs setacl command you'd need to recreate the ACL on the home directory of the user "pat" (the current working directory), and on its "private" subdirectory.
% fs listacl -path . private -cmd
fs setacl -dir . -acl system:authuser rl pat rlidwka pat:friends rlid
fs setacl -dir . -acl smith rlidwka -negative
fs setacl -dir private -acl pat rlidwka
see how it just hands you the commands?? so helpful. π
π PRIVILEGE REQUIRED π
depends what you're pointing at, so listen up:
- If the
-pathargument names an AFS directory, you must have the"l"(lookup) permission on its ACL and on the ACL of every directory that comes before it in the pathname. πΈ - If the
-pathargument names an AFS file, you must have the"l"(lookup) and"r"(read) permissions on the ACL of the file's directory, plus thelpermission on the ACL of each directory that comes before it in the pathname. πΈ - If the
-pathargument names a DFS directory or file, you must have the"x"(execute) permission on its ACL and on the ACL of each directory that comes before it in the pathname. πΈ
basically: know your permissions before you go poking around. β¨
π SEE ALSO π
fs_cleanacl(1), fs_copyacl(1), fs_setacl(1)
π«Ά COPYRIGHT π«Ά
IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.
This documentation is covered by the IBM Public License Version 1.0. It was converted from HTML to POD by software written by Chas Williams and Russ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell.
and that's the whole page, bestie π brought to you by OpenAFS, dated 2026-07-27. go look at some ACLs, you've got this. mwah πβ¨π
π¦ where this page comes from
- ubuntu stonking: openafs-client 1.8.16.1-1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms