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.