ACL_EXTENDED_FD(3)
β¨ ACL_EXTENDED_FD β¨
okay bestie, so acl_extended_fd(3) β it's a Linux library function manual page, and it's giving "quick little vibe check on your file descriptor's ACL" energy. Let's get into it π
πΈ NAME πΈ
acl_extended_fd β test for information in the ACL by file descriptor
π LIBRARY π
Linux Access Control Lists library (libacl, -lacl).
π SYNOPSIS π
#include <sys/types.h>
#include <acl/libacl.h>
int
acl_extended_fd(int fd);
π DESCRIPTION π
so like, acl_extended_fd() is literally the "do you have an extended ACL or not" detector π. If the file identified by the argument fd is associated with an extended access ACL, it returns 1. If the file does not have an extended access ACL, it returns 0. Simple as that, no cap.
And what even is an extended ACL, you ask? It's an ACL that contains entries other than the three required entries of tag types ACL_USER_OBJ, ACL_GROUP_OBJ and ACL_OTHER. Those three are the bare minimum, the main-character trio π. If the result of the acl_extended_fd() function for a file object is 0, then the ACL defines no discretionary access rights other than those already defined by the traditional file permission bits. iykyk β the classic rwx bits got it covered.
heads up though: access to the file object may be further restricted by other mechanisms, such as Mandatory Access Control schemes. So this function isn't the whole story, bestie. The access(2) system call can be used to check whether a given type of access to a file object would be granted.
π₯ RETURN VALUE π₯
If successful, the acl_extended_fd() function returns 1 if the file object identified by fd has an extended access ACL, and 0 if the file object identified by fd does not have an extended access ACL. Otherwise, the value -1 is returned and the global variable errno is set to indicate the error. That -1 is the "something went wrong, check errno" moment π.
π ERRORS π
If any of the following conditions occur, the acl_extended_fd() function returns -1 and sets errno to the corresponding value:
[EBADF]β Thefdargument is not a valid file descriptor. (bestie that's not a real fd π)[ENOTSUP]β The file system on which the file identified byfdis located does not support ACLs, or ACLs are disabled.
π STANDARDS π
This is a non-portable, Linux specific extension to the ACL manipulation functions defined in IEEE Std 1003.1e draft 17 (βPOSIX.1eβ, abandoned). Yeah, the standard got abandoned, rip πͺ¦ β but this function lives on, iconic.
π SEE ALSO π
access(2), acl_get_fd(3), acl(5)
π¦ AUTHOR π¦
Written by Andreas Gruenbacher <andreas.gruenbacher@gmail.com>.
mwah π that's the whole page bestie, go forth and ACL responsibly. This was the Linux ACL library manual, page ACL_EXTENDED_FD(3), dated March 23, 2002 β slay, periodt β¨π«Ά
π¦ where this page comes from
- alpine 3.22: acl-doc 2.3.2-r1 Β· LGPL-2.1-or-later AND GPL-2.0-or-later
- alpine 3.23: acl-doc 2.3.2-r1 Β· LGPL-2.1-or-later AND GPL-2.0-or-later
- alpine 3.24: acl-doc 2.3.2-r1 Β· LGPL-2.1-or-later AND GPL-2.0-or-later
- arch rolling: acl 2.4.0-1 Β· LGPL-2.1-or-later AND GPL-2.0-or-later
- centos-stream 10: libacl-devel 2.4.0-2.el10 Β· LGPL-2.1-or-later
- centos-stream 9: libacl-devel 2.4.0-2.el9 Β· LGPLv2+
- centos-stream 9: libacl-devel 2.4.0-2.el9 Β· LGPLv2+
- debian bookworm: libacl1-dev 2.3.1-3
- debian trixie: libacl1-dev 2.3.2-2+b1
- fedora 43: libacl-devel 2.3.2-4.fc43 Β· LGPL-2.1-or-later
- fedora 43: libacl-devel 2.3.2-4.fc43 Β· LGPL-2.1-or-later
- fedora 43: libacl-devel 2.4.0-1.fc43 Β· LGPL-2.1-or-later
- fedora 43: libacl-devel 2.4.0-1.fc43 Β· LGPL-2.1-or-later
- fedora 44: libacl-devel 2.3.2-6.fc44 Β· LGPL-2.1-or-later
- fedora 44: libacl-devel 2.3.2-6.fc44 Β· LGPL-2.1-or-later
- fedora 44: libacl-devel 2.4.0-1.fc44 Β· LGPL-2.1-or-later
- fedora 44: libacl-devel 2.4.0-1.fc44 Β· LGPL-2.1-or-later
- nixpkgs unstable: acl 2.4.0
- opensuse-leap 16.0: libacl-devel 2.4.0-160000.1.1 Β· GPL-2.0-or-later AND LGPL-2.1-or-later
- opensuse-leap 16.0: libacl-devel 2.4.0-160000.1.1 Β· GPL-2.0-or-later AND LGPL-2.1-or-later
- opensuse-leap 16.0: libacl-devel 2.4.0-160000.1.1 Β· GPL-2.0-or-later AND LGPL-2.1-or-later
- opensuse-leap 16.0: libacl-devel 2.4.0-160000.1.1 Β· GPL-2.0-or-later AND LGPL-2.1-or-later
- ubuntu jammy: libacl1-dev 2.3.1-1
- ubuntu noble: libacl1-dev 2.3.2-1build1
- ubuntu noble: libacl1-dev 2.3.2-1build1.1
- ubuntu resolute: libacl1-dev 2.3.2-2
- ubuntu stonking: libacl1-dev 2.4.0-1
- (C) 2002 Andreas Gruenbacher, <andreas.gruenbacher@gmail.com>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms