2004-11-03 13:51:07 +00:00
|
|
|
.\" 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
|
2004-11-03 14:43:40 +00:00
|
|
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk-manpages@gmx.net>
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
|
|
|
.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
|
2006-05-12 23:22:16 +00:00
|
|
|
S_IRUSR
|
2004-11-03 13:51:07 +00:00
|
|
|
00400 read by owner
|
|
|
|
.TP
|
2006-05-12 23:22:16 +00:00
|
|
|
S_IWUSR
|
2004-11-03 13:51:07 +00:00
|
|
|
00200 write by owner
|
|
|
|
.TP
|
2006-05-12 23:22:16 +00:00
|
|
|
S_IXUSR
|
2004-11-03 13:51:07 +00:00
|
|
|
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,
|
2005-07-18 16:09:29 +00:00
|
|
|
the set-user-ID and set-group-ID execution bits
|
2004-11-03 13:51:07 +00:00
|
|
|
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.)
|
2004-11-10 18:17:26 +00:00
|
|
|
On some file systems, only the superuser can set the sticky bit,
|
2004-11-03 13:51:07 +00:00
|
|
|
which may have a special meaning.
|
2005-07-18 16:09:29 +00:00
|
|
|
For the sticky bit, and for set-user-ID and set-group-ID bits on
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR chmod ()
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR fchmod ()
|
2004-11-03 13:51:07 +00:00
|
|
|
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"
|
2006-08-03 13:57:17 +00:00
|
|
|
4.4BSD, SVr4, POSIX.1-2001.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR chown (2),
|
|
|
|
.BR execve (2),
|
2006-05-02 00:03:35 +00:00
|
|
|
.BR fchmodat (2),
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR open (2),
|
|
|
|
.BR path_resolution (2),
|
|
|
|
.BR stat (2)
|