NAME

     chmod - change mode of file


SYNOPSIS

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

     int chmod(const char *path, mode_t mode)


DESCRIPTION

     The file whose name is given by path has its mode changed to
     mode.   Modes are constructed by or'ing together some combi-
     nation of the following, defined in <sys/stat.h>:

          S_ISUID  04000   set user ID on execution
          S_ISGID  02000   set group ID on execution
          S_ISVTX  01000   `sticky bit' (see below)
          S_IRWXU  00700   read, write, execute by owner
          S_IRUSR  00400   read by owner
          S_IWUSR  00200   write by owner
          S_IXUSR  00100   execute (search on directory) by owner
          S_IRWXG  00070   read, write, execute by group
          S_IRGRP  00040   read by group
          S_IWGRP  00020   write by group
          S_IXGRP  00010   execute (search on directory) by group
          S_IRWXO  00007   read, write, execute by others
          S_IROTH  00004   read by others
          S_IWOTH  00002   write by others
          S_IXOTH  00001   execute (search on directory) by others

     If mode ISVTX (the `sticky bit') is set on a  directory,  an
     unprivileged  user  may  not delete or rename files of other
     users in that directory.  (Minix-vmd)

     Only the owner of a file (or the super-user) may change  the
     mode.

     Writing or changing the owner of a file turns off  the  set-
     user-id  and set-group-id bits unless the user is the super-
     user.  This makes the system somewhat more  secure  by  pro-
     tecting  set-user-id  (set-group-id)  files  from  remaining
     set-user-id (set-group-id) if  they  are  modified,  at  the
     expense of a degree of compatibility.


RETURN VALUE

     Upon successful completion, a value of 0 is returned.   Oth-
     erwise,  a value of -1 is returned and errno is set to indi-
     cate the error.


ERRORS

     Chmod will fail and the file mode will be unchanged if:

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

     [ENAMETOOLONG] The path name exceeds PATH_MAX characters.

     [ENOENT]       The named file does not exist.

     [EACCES]       Search permission is denied for  a  component
                    of the path prefix.

     [ELOOP]        Too many symbolic links were  encountered  in
                    translating the pathname.  (Minix-vmd)

     [EPERM]        The effective user  ID  does  not  match  the
                    owner  of  the file and the effective user ID
                    is not the super-user.

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

     [EFAULT]       Path points outside the  process's  allocated
                    address space.

     [EIO]          An I/O error occurred while reading  from  or
                    writing to the file system.


SEE ALSO

     chmod(1), open(2), chown(2), stat(2).


NOTES

     The sticky bit was historically used to lock important  exe-
     cutables into memory.