diff options
Diffstat (limited to 'man2/chmod.2')
-rw-r--r-- | man2/chmod.2 | 212 |
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) |