---
name: "lfc_setacl"
section: "3"
platform: "linux"
package: "liblfc-dev"
version: "1.10.0-2+b3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/lfc_setacl"
---

# lfc\_setacl(3)

set LFC directory/file access control lists

## NAME

lfc\_setacl - set LFC directory/file access control lists

## SYNOPSIS

**#include \<sys/types.h\>**\
 **#include "lfc\_api.h"**

**int lfc\_setacl (const char \****path***,** **int** *nentries***,** **struct lfc\_acl \****acl***)**

## DESCRIPTION

**lfc\_setacl** sets the Access Control List associated with a LFC directory/file.

- *path*

  specifies the logical pathname relative to the current LFC directory or the full LFC pathname.

- *nentries*

  specifies the number of entries present in the buffer.

- *acl*

  is a pointer to an array of lfc\_acl structures provided by the application.

```
struct lfc_acl {
        unsigned char   a_type;
        int             a_id;
        unsigned char   a_perm;
};
```

- *a\_type*

  is the ACL type: CNS\_ACL\_USER\_OBJ, CNS\_ACL\_USER, CNS\_ACL\_GROUP\_OBJ, CNS\_ACL\_GROUP, CNS\_ACL\_MASK or CNS\_ACL\_OTHER. Types for default entries are obtained by OR'ing the flag CNS\_ACL\_DEFAULT with one of the above types.

- *a\_id*

  is the user or group numeric id.

- *a\_perm*

  is the access permission in numeric form obtained by OR'ing some of the bits S\_IROTH, S\_IWOTH, S\_IXOTH.

The effective user ID of the process must match the owner of the file or the caller must have ADMIN privilege in the Cupv database.

## RETURN VALUE

This routine returns 0 if the operation was successful or -1 if the operation failed. In the latter case, **serrno** is set appropriately.

## ERRORS

- **EPERM**

  The effective user ID does not match the owner of the file and the caller does not have ADMIN privilege in the Cupv database.

- **ENOENT**

  The named file/directory does not exist or is a null pathname.

- **EACCES**

  Search permission is denied on a component of the *path* prefix.

- **EFAULT**

  *path* or *acl* is a NULL pointer.

- **ENOTDIR**

  A component of *path* prefix is not a directory.

- **EINVAL**

  *nentries* is not greater than zero or is greater than CA\_MAXACLENTRIES or the ACL entries are not valid.

- **ENOSPC**

  The name server database is full.

- **ENAMETOOLONG**

  The length of *path* exceeds **CA\_MAXPATHLEN** or the length of a *path* component exceeds **CA\_MAXNAMELEN**.

- **SENOSHOST**

  Host unknown.

- **SENOSSERV**

  Service unknown.

- **SECOMERR**

  Communication error.

- **ENSNACT**

  Name server is not running or is being shutdown.

## SEE ALSO

**[Castor\_limits(4)](/Castor_limits/4.md)**, **[lfc\_chdir(3)](/lfc_chdir/3.md)**, **[lfc\_chmod(3)](/lfc_chmod/3.md)**, **[lfc-setacl(1)](/lfc-setacl/1.md)**

## AUTHOR

**LCG Grid Deployment** Team
