CHMOD(2)                         System Calls                         CHMOD(2)




NAME

       chmod, fchmod - change mode of file


SYNOPSIS

       #include <sys/stat.h>

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


DESCRIPTION

       The  function chmod sets the file permission bits of the file specified
       by the pathname path to mode.  fchmod sets the permission bits  of  the
       specified  file  descriptor  fd.  chmod verifies that the process owner
       (user) either owns the file specified by path (or fd) or is the  super-
       user.   A  mode  is  created  from or'd permission bit masks defined in
       <sys/stat.h>:

       #define S_IRWXU 0000700    /* RWX mask for owner */
       #define S_IRUSR 0000400    /* R for owner */
       #define S_IWUSR 0000200    /* W for owner */
       #define S_IXUSR 0000100    /* X for owner */

       #define S_IRWXG 0000070    /* RWX mask for group */
       #define S_IRGRP 0000040    /* R for group */
       #define S_IWGRP 0000020    /* W for group */
       #define S_IXGRP 0000010    /* X for group */

       #define S_IRWXO 0000007    /* RWX mask for other */
       #define S_IROTH 0000004    /* R for other */
       #define S_IWOTH 0000002    /* W for other */
       #define S_IXOTH 0000001    /* X for other */

       #define S_ISUID 0004000    /* set user id on execution */
       #define S_ISGID 0002000    /* set group id on execution */
       #define S_ISVTX 0001000    /* save swapped text even after use */

       The ISVTX (the sticky bit ) indicates to the  system  which  executable
       files  are shareable (the default) and the system maintains the program
       text of the files in the swap area. The sticky bit may only be  set  by
       the super user on shareable executable files.

       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.
       The  sticky  bit  may  be set by any user on a directory which the user
       owns or has appropriate permissions.  For more details of  the  proper‐
       ties of the sticky bit, see sticky(8).

       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.


COMPATIBILITY

       The  ORCA/C  implementation  of  chmod  interprets mode as GS/OS access
       bits.  In order to get this behavior with the GNO implementation,  mode
       mapping must be turned off (see mapMode(3)).

       Under  GNO, if UNIX mode mapping is in effect, and the file type is ei‐
       ther TXT or SRC, and the S_IXUSR bit in mode is set, then the  file  is
       changed  into  a  shell  script by setting the file type to SRC and the
       auxilliary file type to EXEC.


RETURN VALUES

       Upon successful completion, a value of 0  is  returned.   Otherwise,  a
       value of -1 is returned and errno is set to indicate the error.


BUGS

       Verification  of  the  ownership  of  the  target file is not currently
       checked under GNO.  (This would matter only for Appleshare volumes.)

       Due to GNO's underlying filesystems, the sticky bit is not implemented.


SEE ALSO

       chmod(1), open(2), chown(2), stat(2), sticky(8)


STANDARDS

       chmod is expected to conform to IEEE Std 1003.1-1988 (POSIX).


HISTORY

       The fchmod function call appeared in 4.2BSD.



GNO                            22 February 1996                       CHMOD(2)

Man(1) output converted with man2html