mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-22 14:30:29 +00:00
f0707a835e
shell script if the S_IXUSR flag is set.
161 lines
5.2 KiB
Groff
161 lines
5.2 KiB
Groff
.\" Copyright (c) 1980, 1991, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)chmod.2 8.1 (Berkeley) 6/4/93
|
|
.\"
|
|
.TH CHMOD 2 "22 February 1996" GNO "System Calls"
|
|
.SH NAME
|
|
.BR chmod ,
|
|
.BR fchmod
|
|
\- change mode of file
|
|
.SH SYNOPSIS
|
|
#include <sys/stat.h>
|
|
.sp 1
|
|
int
|
|
\fBchmod\fR (const char *\fIpath\fR, mode_t \fImode\fR);
|
|
.br
|
|
int
|
|
\fBfchmod\fR (int \fIfd\fR, mode_t \fImode\fR);
|
|
.SH DESCRIPTION
|
|
The function
|
|
.BR chmod
|
|
sets the file permission bits
|
|
of the file
|
|
specified by the pathname
|
|
.I path
|
|
to
|
|
.IR mode .
|
|
.BR fchmod
|
|
sets the permission bits of the specified
|
|
file descriptor
|
|
.IR fd .
|
|
.BR chmod
|
|
verifies that the process owner (user) either owns
|
|
the file specified by
|
|
.I path
|
|
(or
|
|
.IR fd )
|
|
or
|
|
is the super-user.
|
|
A mode is created from
|
|
.IR or'd
|
|
permission bit masks
|
|
defined in <sys/stat.h>:
|
|
.nf
|
|
|
|
#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 */
|
|
.fi
|
|
.LP
|
|
The
|
|
.BR ISVTX
|
|
(the
|
|
.IR 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.
|
|
.LP
|
|
If mode
|
|
.BR 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 properties of the sticky bit, see
|
|
.BR sticky (8).
|
|
.LP
|
|
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.
|
|
.SH COMPATIBILITY
|
|
The Orca/C implementation of
|
|
.BR chmod
|
|
interprets
|
|
.IR mode
|
|
as GS/OS access bits. In order to get this behavior with the GNO
|
|
implementation, mode mapping must be turned off (see
|
|
.BR mapMode (3)).
|
|
.LP
|
|
Under GNO, if UNIX mode mapping is in effect, and the file type
|
|
is either TXT or SRC, and the
|
|
.BR S_IXUSR
|
|
bit in
|
|
.IR 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.
|
|
.SH RETURN VALUES
|
|
Upon successful completion, a value of 0 is returned.
|
|
Otherwise, a value of -1 is returned and
|
|
.IR errno
|
|
is set to indicate the error.
|
|
.SH BUGS
|
|
Verification of the ownership of the target file is not currently checked
|
|
under GNO. (This would matter only for Appleshare volumes.)
|
|
.LP
|
|
Due to GNO's underlying filesystems, the sticky bit is not implemented.
|
|
.SH SEE ALSO
|
|
.BR chmod (1),
|
|
.BR open (2),
|
|
.BR chown (2),
|
|
.BR stat (2),
|
|
.BR sticky (8)
|
|
.SH STANDARDS
|
|
.BR chmod
|
|
is expected to conform to IEEE Std 1003.1-1988 (POSIX).
|
|
.SH HISTORY
|
|
The
|
|
.BR fchmod
|
|
function call
|
|
appeared in 4.2BSD.
|