dpns_chmod(3) change access mode of a DPNS directory/file in the name server

SYNOPSIS

#include <sys/types.h>
#include "dpns_api.h"

int dpns_chmod (const char *path, mode_t mode)

DESCRIPTION

dpns_chmod sets the access permission portion of the mode of a DPNS directory/file in the name server to the bit pattern in mode.
path
specifies the logical pathname relative to the current DPNS directory or the full DPNS 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.

AUTHOR

LCG Grid Deployment Team