CHMOD(2)            Linux Programmer's Manual            CHMOD(2)

NAME
       chmod, fchmod - change permissions of a file

SYNOPSIS
       #include <sys/types.h>
       #include <sys/stat.h>

       int chmod(const char *path, mode_t mode);
       int fchmod(int fildes, mode_t mode);

DESCRIPTION
       The mode of the file given by path or referenced by fildes
       is changed.

       Modes are specified by or'ing the following:

              S_ISUID   04000 set user ID on execution

              S_ISGID   02000 set group ID on execution

              S_ISVTX   01000 sticky bit

              S_IRUSR (S_IREAD)
                        00400 read by owner

              S_IWUSR (S_IWRITE)
                        00200 write by owner

              S_IXUSR (S_IEXEC)
                        00100 execute/search by owner

              S_IRGRP   00040 read by group

              S_IWGRP   00020 write by group

              S_IXGRP   00010 execute/search by group

              S_IROTH   00004 read by others

              S_IWOTH   00002 write by others

              S_IXOTH   00001 execute/search by others

       The effective UID of the process  must  be  zero  or  must
       match the owner of the file.

       If  the  effective  UID of the process is not zero and the
       group of the file does not match the effective group ID of
       the  process  or  one  of its supplementary group IDs, the
       S_ISGID bit will be turned off, but this will not cause an
       error to be returned.

       Depending on the file system, set user ID and set group ID
       execution bits may be turned off if a file is written.  On
       some  file systems, only the super-user can set the sticky
       bit, which may have a special meaning (e.g., for  directo-
       ries,  a  file  can  only  be  deleted by the owner or the
       super-user).

       On NFS file  systems,  restricting  the  permissions  will
       immediately  influence  already  open  files,  because the
       access control is done on the server, but open  files  are
       maintained by the client.  Widening the permissions may be
       delayed for other clients if attribute caching is  enabled
       on them.

RETURN VALUE
       On  success,  zero is returned.  On error, -1 is returned,
       and errno is set appropriately.

ERRORS
       Depending  on  the  file  system,  other  errors  can   be
       returned.   The  more  general errors for chmod are listed
       below:

       EPERM   The effective UID does not match the owner of  the
               file, and is not zero.

       EROFS   The named file resides on a read-only file system.

       EFAULT  path points outside your accessible address space.

       ENAMETOOLONG
               path is too long.

       ENOENT  The file does not exist.

       ENOMEM  Insufficient kernel memory was available.

       ENOTDIR A component of the path prefix is not a directory.

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

       ELOOP   Too   many  symbolic  links  were  encountered  in
               resolving path.

       EIO     An I/O error occurred.

       The general errors for fchmod are listed below:

       EBADF   The file descriptor fildes is not valid.

       EROFS   See above.

       EPERM   See above.

       EIO     See above.

CONFORMING TO
       The chmod call conforms  to  SVr4,  SVID,  POSIX,  X/OPEN,
       4.4BSD.   SVr4  documents  EINTR,  ENOLINK  and  EMULTIHOP
       returns, but no ENOMEM.  POSIX.1 does not document EFAULT,
       ENOMEM,  ELOOP  or  EIO  error  conditions,  or the macros
       S_IREAD, S_IWRITE and S_IEXEC.

       The fchmod call conforms to 4.4BSD and SVr4.   SVr4  docu-
       ments  additional  EINTR  and  ENOLINK  error  conditions.
       POSIX requires the fchmod function  if  at  least  one  of
       _POSIX_MAPPED_FILES  and  _POSIX_SHARED_MEMORY_OBJECTS  is
       defined, and documents additional ENOSYS and EINVAL  error
       conditions, but does not document EIO.

       POSIX and X/OPEN do not document the sticky bit.

SEE ALSO
       open(2), chown(2), stat(2)

Linux 2.0.32             10 December 1997                       1