Seth Woolley's Man Viewer

Manual for chmod - man 2 chmod

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

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



NAME
       chmod(1,2), fchmod - change permissions of a file(1,n)

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

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

DESCRIPTION
       The  mode of the file(1,n) given by path or referenced by fildes is changed.

       Modes are specified by or'ing the following:


              S_ISUID   04000 set(7,n,1 builtins) user ID on execution

              S_ISGID   02000 set(7,n,1 builtins) group ID on execution

              S_ISVTX   01000 sticky bit

              S_IRUSR (S_IREAD)
                        00400 read(2,n,1 builtins) by owner

              S_IWUSR (S_IWRITE)
                        00200 write(1,2) by owner

              S_IXUSR (S_IEXEC)
                        00100 execute/search by owner

              S_IRGRP   00040 read(2,n,1 builtins) by group

              S_IWGRP   00020 write(1,2) by group

              S_IXGRP   00010 execute/search by group

              S_IROTH   00004 read(2,n,1 builtins) by others

              S_IWOTH   00002 write(1,2) by others

              S_IXOTH   00001 execute/search by others


       The effective UID of the calling process must match the  owner  of  the
       file(1,n),  or  the  process  must  be  privileged  (Linux: it must have the
       CAP_FOWNER capability).

       If the calling process is not privileged  (Linux:  does  not  have  the
       CAP_FSETID  capability),  and  the group of the file(1,n) 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(8,n) to be returned.

       As a security measure, depending on the file(1,n) system, the  set(7,n,1 builtins)  user  ID
       and set(7,n,1 builtins) group ID execution bits may be turned off if(3,n) a file(1,n) is written.
       (On Linux this  occurs  if(3,n)  the  writing  process  does  not  have  the
       CAP_FSETID  capability.)  On some file(1,n) systems, only the super-user can
       set(7,n,1 builtins) the sticky bit, which may have a special meaning.  For  the  sticky
       bit,  and  for  set(7,n,1 builtins)  user  ID and set(7,n,1 builtins) group ID bits on directories, see
       stat(1,2)(2).

       On NFS file(1,n)  systems,  restricting  the  permissions  will  immediately
       influence already open(2,3,n) files, because the access(2,5) control is done on the
       server, but open(2,3,n) files are maintained by the client.  Widening the per-
       missions  may  be  delayed  for  other  clients if(3,n) attribute caching is
       enabled on them.

RETURN VALUE
       On success, zero is returned.  On error(8,n), -1 is returned, and  errno  is
       set(7,n,1 builtins) appropriately.

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


       EACCES Search permission is denied on a component of the  path  prefix.
              (See also path_resolution(2).)

       EFAULT path points outside your accessible address space.

       EIO    An I/O error(8,n) occurred.

       ELOOP  Too many symbolic links were encountered in(1,8) resolving path.

       ENAMETOOLONG
              path is too long.

       ENOENT The file(1,n) does not exist.

       ENOMEM Insufficient kernel memory was available.

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

       EPERM  The  effective UID does not match the owner of the file(1,n), and the
              process  is  not  privileged  (Linux:  it  does  not  have   the
              CAP_FOWNER capability).

       EROFS  The named(5,8) file(1,n) resides on a read-only file(1,n) system.

       The general errors for fchmod are listed below:

       EBADF  The file(1,n) descriptor fildes is not valid.

       EIO    See above.

       EPERM  See above.

       EROFS  See above.

CONFORMING TO
       The  chmod(1,2)  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(8,n) conditions, or the
       macros S_IREAD, S_IWRITE and S_IEXEC.

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

SEE ALSO
       chown(1,2)(2), execve(2), open(2,3,n)(2), path_resolution(2), stat(1,2)(2)



Linux 2.6.7                       2004-06-23                          CHMOD(2)

References for this manual (incoming links)