---
name: "acl_size"
section: "3"
platform: "linux"
package: "acl"
version: "2.4.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/acl_size"
---

# acl\_size(3)

get the size of the external representation of an ACL

## NAME

**acl\_size** – get the size of the external representation of an ACL

## LIBRARY

Linux Access Control Lists library (libacl, -lacl).

## SYNOPSIS

**#include \<sys/types.h\>**

**#include \<sys/acl.h\>**

*ssize\_t*\

**acl\_size**(*acl\_t acl*);

## DESCRIPTION

The **acl\_size**() function return the size, in bytes, of the buffer required to hold the exportable, contiguous, persistent form of the ACL pointed to by the argument *acl*, when converted by **acl\_copy\_ext**().

Any existing ACL entry descriptors that refer to entries in *acl* continue to refer to the same entries. Any existing ACL pointers that refer to the ACL referred to by *acl* continue to refer to the ACL. The order of ACL entries within *acl* remains unchanged.

## RETURN VALUE

On success, the **acl\_size**() function returns the size in bytes of the contiguous, persistent form of the ACL. On error, a value of (ssize\_t)-1 is returned and *errno* is set appropriately.

## ERRORS

If any of the following conditions occur, the **acl\_size**() function returns a value of (ssize\_t)-1 and sets *errno* to the corresponding value:

- \[EINVAL\]

  The argument *acl* is not a valid pointer to an ACL.

## STANDARDS

IEEE Std 1003.1e draft 17 (“POSIX.1e”, abandoned)

## SEE ALSO

[acl\_copy\_ext(3)](/acl_copy_ext/3.md), [acl(5)](/acl/5.md)

## AUTHOR

Derived from the FreeBSD manual pages written by Robert N M Watson ⟨rwatson@FreeBSD.org⟩, and adapted for Linux by Andreas Gruenbacher ⟨andreas.gruenbacher@gmail.com⟩.
