---
name: "lfc_chmod"
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_chmod"
---

# lfc\_chmod(3)

change access mode of a LFC directory/file in the name server

## NAME

lfc\_chmod - change access mode of a LFC directory/file in the name server

## SYNOPSIS

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

**int lfc\_chmod (const char \****path***,** **mode\_t** *mode***)**

## DESCRIPTION

**lfc\_chmod** sets the access permission portion of the mode of a LFC directory/file in the name server to the bit pattern in *mode.*

- *path*

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

- *mode*

  is constructed by OR'ing the bits defined in \<**sys/stat.h**\> under Unix or  **"statbits.h"** under Windows/NT:

  **S\_ISUID 0004000** set user ID on execution\
   **S\_ISGID 0002000** set group ID on execution\
   **S\_ISVTX 0001000** sticky bit\
   **S\_IRUSR 0000400** read by owner\
   **S\_IWUSR 0000200** write by owner\
   **S\_IXUSR 0000100** execute/search by owner\
   **S\_IRGRP 0000040** read by group\
   **S\_IWGRP 0000020** write by group\
   **S\_IXGRP 0000010** execute/search by group\
   **S\_IROTH 0000004** read by others\
   **S\_IWOTH 0000002** write by others\
   **S\_IXOTH 0000001** execute/search by others

  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. If a directory is writable and has the sticky bit set, files/directories within that directory can be removed or renamed only if:

  the effective user ID of the requestor matches the owner ID of the file or

  the effective user ID of the requestor matches the owner ID of the directory or

  the file is writable by the requestor or

  the requestor has 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* is a NULL pointer.

- **ENOTDIR**

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

- **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)**, **Cupvlist(1)**

## AUTHOR

**LCG Grid Deployment** Team
