summaryrefslogtreecommitdiffstats
path: root/man2/chmod.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/chmod.2')
-rw-r--r--man2/chmod.2212
1 files changed, 212 insertions, 0 deletions
diff --git a/man2/chmod.2 b/man2/chmod.2
new file mode 100644
index 000000000..fcb3a1b22
--- /dev/null
+++ b/man2/chmod.2
@@ -0,0 +1,212 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified 1993-07-21 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1997-01-12 by Michael Haardt
+.\" <michael@cantor.informatik.rwth-aachen.de>: NFS details
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
+.\"
+.TH CHMOD 2 2004-06-23 "Linux 2.6.7" "Linux Programmer's Manual"
+.SH NAME
+chmod, fchmod \- change permissions of a file
+.SH SYNOPSIS
+.B #include <sys/types.h>
+.br
+.B #include <sys/stat.h>
+.sp
+.BI "int chmod(const char *" path ", mode_t " mode );
+.br
+.BI "int fchmod(int " fildes ", mode_t " mode );
+.SH DESCRIPTION
+The mode of the file given by
+.I path
+or referenced by
+.I fildes
+is changed.
+
+Modes are specified by
+.IR or'ing
+the following:
+.RS
+.sp
+.TP 1.0i
+S_ISUID
+04000 set user ID on execution
+.TP
+S_ISGID
+02000 set group ID on execution
+.TP
+S_ISVTX
+01000 sticky bit
+.TP
+S_IRUSR (S_IREAD)
+00400 read by owner
+.TP
+S_IWUSR (S_IWRITE)
+00200 write by owner
+.TP
+S_IXUSR (S_IEXEC)
+00100 execute/search by owner
+.TP
+S_IRGRP
+00040 read by group
+.TP
+S_IWGRP
+00020 write by group
+.TP
+S_IXGRP
+00010 execute/search by group
+.TP
+S_IROTH
+00004 read by others
+.TP
+S_IWOTH
+00002 write by others
+.TP
+S_IXOTH
+00001 execute/search by others
+.sp
+.RE
+
+The effective UID of the calling process must match the owner of the file,
+or the process must be privileged (Linux: it must have the
+.B CAP_FOWNER
+capability).
+
+If the calling process is not privileged (Linux: does not have the
+.B CAP_FSETID
+capability), and the group of the file 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 to be returned.
+
+As a security measure, depending on the file system,
+the set user ID and set group ID execution bits
+may be turned off if a file is written.
+(On Linux this occurs if the writing process does not have the
+.B CAP_FSETID
+capability.)
+On some file systems, only the super-user can set the sticky bit,
+which may have a special meaning.
+For the sticky bit, and for set user ID and set group ID bits on
+directories, see
+.BR stat (2).
+
+On NFS file systems, restricting the permissions will immediately influence
+already open files, because the access control is done on the server, but
+open files are maintained by the client. Widening the permissions may be
+delayed for other clients if attribute caching is enabled on them.
+.SH "RETURN VALUE"
+On success, zero is returned. On error, \-1 is returned, and
+.I errno
+is set appropriately.
+.SH ERRORS
+Depending on the file system, other errors can be returned. The more
+general errors for
+.B chmod
+are listed below:
+
+.TP
+.B EACCES
+Search permission is denied on a component of the path prefix.
+(See also
+.BR path_resolution (2).)
+.TP
+.B EFAULT
+.I path
+points outside your accessible address space.
+.TP
+.B EIO
+An I/O error occurred.
+.TP
+.B ELOOP
+Too many symbolic links were encountered in resolving
+.IR path .
+.TP
+.B ENAMETOOLONG
+.I path
+is too long.
+.TP
+.B ENOENT
+The file does not exist.
+.TP
+.B ENOMEM
+Insufficient kernel memory was available.
+.TP
+.B ENOTDIR
+A component of the path prefix is not a directory.
+.TP
+.B EPERM
+The effective UID does not match the owner of the file,
+and the process is not privileged (Linux: it does not have the
+.B CAP_FOWNER
+capability).
+.TP
+.B EROFS
+The named file resides on a read-only file system.
+.PP
+The general errors for
+.B fchmod
+are listed below:
+.TP
+.B EBADF
+The file descriptor
+.I fildes
+is not valid.
+.TP
+.B EIO
+See above.
+.TP
+.B EPERM
+See above.
+.TP
+.B EROFS
+See above.
+.SH "CONFORMING TO"
+The
+.B chmod
+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
+conditions, or the macros \fBS_IREAD\fP, \fBS_IWRITE\fP and \fBS_IEXEC\fP.
+.PP
+The
+.B fchmod
+call conforms to 4.4BSD and SVr4.
+SVr4 documents additional EINTR and ENOLINK error conditions.
+POSIX requires the
+.B fchmod
+function if at least one of
+.B _POSIX_MAPPED_FILES
+and
+.B _POSIX_SHARED_MEMORY_OBJECTS
+is defined, and documents additional ENOSYS and EINVAL error
+conditions, but does not document EIO.
+.SH "SEE ALSO"
+.BR chown (2),
+.BR execve (2),
+.BR open (2),
+.BR path_resolution (2),
+.BR stat (2)