# chmod(2)

    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 combination 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  protecting  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.  Otherwise, a value
         of -1 is returned and errno is set to indicate 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  executables  into
         memory.