113 lines
4.3 KiB
Groff
113 lines
4.3 KiB
Groff
.\" $NetBSD: sticky.7,v 1.7 2024/02/08 20:11:55 andvar Exp $
|
|
.\"
|
|
.\" 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. 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.
|
|
.\"
|
|
.\" @(#)sticky.8 8.1 (Berkeley) 6/5/93
|
|
.\"
|
|
.Dd May 10, 2011
|
|
.Dt STICKY 7
|
|
.Os
|
|
.Sh NAME
|
|
.Nm sticky
|
|
.Nd Description of the `sticky' (S_ISVTX) bit functionality
|
|
.Sh DESCRIPTION
|
|
A special file mode, called the
|
|
.Em sticky bit
|
|
(mode
|
|
.Dv S_ISVTX ) ,
|
|
is used to indicate special treatment for directories.
|
|
See
|
|
.Xr chmod 2
|
|
or the file
|
|
.Pa /usr/include/sys/stat.h
|
|
.Ss Sticky files
|
|
For regular files, the use of mode
|
|
.Dv S_ISVTX
|
|
is reserved and can be set only by the super-user.
|
|
.Nx
|
|
does not currently treat regular files that have the sticky bit set
|
|
specially, but this behavior might change in the future.
|
|
.Ss Sticky directories
|
|
A directory whose
|
|
.Dq sticky bit
|
|
is set becomes a
|
|
directory in which the deletion of files is restricted.
|
|
A file in a sticky directory may only be removed or renamed
|
|
by a user if the user has write permission for the directory and
|
|
the user is the owner of the file, the owner of the directory,
|
|
or the super-user.
|
|
This feature is usefully applied to directories such as
|
|
.Pa /tmp
|
|
which must be publicly writable but should deny users the license
|
|
to arbitrarily delete or rename each others' files.
|
|
.Pp
|
|
Any user may create a sticky directory.
|
|
See
|
|
.Xr chmod 1
|
|
for details about modifying file modes.
|
|
.Sh HISTORY
|
|
The sticky bit first appeared in V7, and this manual page appeared
|
|
in section 8.
|
|
Its initial use was to mark shareable executables
|
|
that were frequently used so that they would stay in swap after
|
|
the process exited.
|
|
Shareable executables were compiled in a special way so their text
|
|
and read-only data could be shared amongst processes.
|
|
.Xr vi 1
|
|
and
|
|
.Xr sh 1
|
|
were such executables.
|
|
This is where the term
|
|
.Dq sticky
|
|
comes from - the program would stick around in swap, and it would
|
|
not have to be fetched again from the file system.
|
|
Of course as long as there was a copy in the swap area, the file
|
|
was marked busy so it could not be overwritten.
|
|
On V7 this meant that the file could not be removed either, because
|
|
busy executables could not be removed, but this restriction was
|
|
lifted in BSD releases.
|
|
.Pp
|
|
To replace such executables was a cumbersome process.
|
|
One had first to remove the sticky bit, then execute the binary so
|
|
that the copy from swap was flushed, overwrite the executable, and
|
|
finally reset the sticky bit.
|
|
.Pp
|
|
Later, on SunOS 4, the sticky bit got an additional meaning for
|
|
files that had the bit set and were not executable: read and write
|
|
operations from and to those files would go directly to the disk
|
|
and bypass the buffer cache.
|
|
This was typically used on swap files for NFS clients on an NFS
|
|
server, so that swap I/O generated by the clients on the servers
|
|
would not evict useful data from the server's buffer cache.
|
|
.Sh BUGS
|
|
Neither
|
|
.Xr open 2
|
|
nor
|
|
.Xr mkdir 2
|
|
will create a file with the sticky bit set.
|