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

# acl\_delete\_entry(3)

delete an ACL entry

## NAME

**acl\_delete\_entry** – delete an ACL entry

## LIBRARY

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

## SYNOPSIS

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

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

*int*\

**acl\_delete\_entry**(*acl\_t acl*, *acl\_entry\_t entry\_d*);

## DESCRIPTION

The **acl\_delete\_entry**() function removes the ACL entry indicated by the *entry\_d* descriptor from the ACL pointed to by *acl*. Any existing ACL entry descriptors that refer to entries in *acl* other than that referred to by *entry\_d* continue to refer to the same entries. The argument *entry\_d* and any other ACL entry descriptors that refer to the same ACL entry are undefined after this function completes. Any existing ACL pointers that refer to the ACL referred to by *acl* continue to refer to the ACL.

## RETURN VALUE

The **acl\_delete\_entry()** function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

## ERRORS

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

- \[EINVAL\]

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

  The argument *entry\_d* is not a valid pointer to an ACL entry.

## STANDARDS

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

## SEE ALSO

[acl\_copy\_entry(3)](/acl_copy_entry/3.md), [acl\_create\_entry(3)](/acl_create_entry/3.md), [acl\_get\_entry(3)](/acl_get_entry/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⟩.
