mirror of https://github.com/mkerrisk/man-pages
Compare commits
22 Commits
3d892e9692
...
091fbf1fef
Author | SHA1 | Date |
---|---|---|
Michael Kerrisk | 091fbf1fef | |
Michael Kerrisk | 6e00b7a858 | |
Michael Kerrisk | a7846609db | |
Alejandro Colomar | fb74563941 | |
Michael Kerrisk | 111ccf7e90 | |
Michael Kerrisk | 9428bb9d8a | |
Michael Kerrisk | 24483c2782 | |
Michael Kerrisk | ababc346b3 | |
Michael Kerrisk | 906ab4945c | |
Michael Kerrisk | ebc82e00ee | |
Michael Kerrisk | f6aaf493f8 | |
Michael Kerrisk | 2433a20ce1 | |
Michael Kerrisk | 82357e60d7 | |
Michael Kerrisk | 8c9a827429 | |
Michael Kerrisk | 5aea19ed35 | |
Michael Kerrisk | aa62e72ded | |
Michael Kerrisk | a66648bbd1 | |
Michael Kerrisk | 44f2a6b8cd | |
Michael Kerrisk | 88ebfb241b | |
Michael Kerrisk | ee54e5d5cc | |
Michael Kerrisk | 74ed673c59 | |
Michael Kerrisk | b3987057c6 |
328
Changes
328
Changes
|
@ -1,7 +1,47 @@
|
||||||
==================== Changes in man-pages-5.13 ====================
|
==================== Changes in man-pages-5.13 ====================
|
||||||
|
|
||||||
Released: ????-??-??, Munich
|
Released: 2021-08-27, Christchurch
|
||||||
|
|
||||||
|
Ahelenia Ziemiańska (наб) <nabijaczleweli@nabijaczleweli.xyz>
|
||||||
|
Alan Peakall <Alan.Peakall@helpsystems.com>
|
||||||
|
Alejandro Colomar <alx.manpages@gmail.com>
|
||||||
|
Alexis Wilke <alexis@m2osw.com>
|
||||||
|
Askar Safin <safinaskar@mail.ru>
|
||||||
|
Christian Brauner <christian.brauner@ubuntu.com>
|
||||||
|
Christophe Leroy <christophe.leroy@csgroup.eu>
|
||||||
|
Christopher Yeleighton <giecrilj@stegny.2a.pl>
|
||||||
|
Cristian Morales Vega <christian.morales.vega@gmail.com>
|
||||||
|
Dan Robertson <dan@dlrobertson.com>
|
||||||
|
Darrick J. Wong <djwong@kernel.org>
|
||||||
|
Dominique Brazziel <dbrazziel@snet.net>
|
||||||
|
EmanueleTorre <torreemanuele6@gmail.com>
|
||||||
|
Eric W. Biederman <ebiederm@xmission.com>
|
||||||
|
G. Branden Robinson <g.branden.robinson@gmail.com>
|
||||||
|
Helge Kreutzmann <debian@helgefjell.de>
|
||||||
|
Jakub Wilk <jwilk@jwilk.net>
|
||||||
|
James O. D. Hunt <jamesodhunt@gmail.com>
|
||||||
|
Jonny Grant <jg@jguk.org>
|
||||||
|
Kees Cook <keescook@chromium.org>
|
||||||
|
Kir Kolyshkin <kolyshkin@gmail.com>
|
||||||
|
Kurt Kanzenbach <kurt@linutronix.de>
|
||||||
|
kXuan <kxuanobj@gmail.com>
|
||||||
|
Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
|
Michael Weiß <michael.weiss@aisec.fraunhofer.de>
|
||||||
|
NeilBrown <neilb@suse.de>
|
||||||
|
Nora Platiel <nplatiel@gmx.us>
|
||||||
|
Pali Rohár <pali@kernel.org>
|
||||||
|
Peter Collingbourne <pcc@google.com>
|
||||||
|
Richard Palethorpe <rpalethorpe@suse.com>
|
||||||
|
Rodrigo Campos <rodrigo@kinvolk.io>
|
||||||
|
Sagar Patel <sagarmp@cs.unc.edu>
|
||||||
|
Serge E. Hallyn <serge@hallyn.com>
|
||||||
|
Sergey Petrakov <kr@spmail.info>
|
||||||
|
Stefan Kanthak <stefan.kanthak@nexgo.de>
|
||||||
|
Štěpán Němec <stepnem@gmail.com>
|
||||||
|
Thomas Gleixner <tglx@linutronix.de>
|
||||||
|
Thomas Voss <thomasavoss@protonmail.com>
|
||||||
|
Viet Than <thanhoangviet@gmail.com>
|
||||||
|
Will Manley <will@williammanley.net>
|
||||||
|
|
||||||
Contributors
|
Contributors
|
||||||
------------
|
------------
|
||||||
|
@ -17,19 +57,301 @@ Apologies if I missed anyone!
|
||||||
New and rewritten pages
|
New and rewritten pages
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
mount_setattr.2
|
||||||
|
Christian Brauner [Alejandro Colomar, Michael Kerrisk]
|
||||||
|
New manual page documenting the mount_setattr() system call
|
||||||
|
|
||||||
|
|
||||||
Newly documented interfaces in existing pages
|
Newly documented interfaces in existing pages
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
|
futex.2
|
||||||
|
Kurt Kanzenbach [Alejandro Colomar, Thomas Gleixner, Michael Kerrisk]
|
||||||
|
Document FUTEX_LOCK_PI2
|
||||||
|
|
||||||
New and changed links
|
ioctl_tty.2
|
||||||
---------------------
|
Pali Rohár [Alejandro Colomar, Michael kerrisk]
|
||||||
|
Document ioctls: TCGETS2, TCSETS2, TCSETSW2, TCSETSF2
|
||||||
|
|
||||||
|
pidfd_open.2
|
||||||
|
Michael Kerrisk
|
||||||
|
Document PIDFD_NONBLOCK
|
||||||
|
|
||||||
|
seccomp_unotify.2
|
||||||
|
Rodrigo Campos [Alejandro Colomar]
|
||||||
|
Document SECCOMP_ADDFD_FLAG_SEND
|
||||||
|
|
||||||
|
sigaction.2
|
||||||
|
Peter Collingbourne [Alejandro Colomar, Michael Kerrisk]
|
||||||
|
Document SA_EXPOSE_TAGBITS and the flag support detection protocol
|
||||||
|
|
||||||
|
statx.2
|
||||||
|
NeilBrown
|
||||||
|
Document STATX_MNT_ID
|
||||||
|
capabilities.7
|
||||||
|
user_namespaces.7
|
||||||
|
Michael Kerrisk, Kir Kolyshkin [Alejandro Colomar]
|
||||||
|
Describe CAP_SETFCAP for mapping UID 0
|
||||||
|
|
||||||
|
mount_namespaces.7
|
||||||
|
Michael Kerrisk [Christian Brauner, Eric W. Biederman]
|
||||||
|
More clearly explain the notion of locked mounts
|
||||||
|
For a long time, this manual page has had a brief discussion of
|
||||||
|
"locked" mounts, without clearly saying what this concept is, or
|
||||||
|
why it exists. Expand the discussion with an explanation of what
|
||||||
|
locked mounts are, why mounts are locked, and some examples of the
|
||||||
|
effect of locking.
|
||||||
|
user_namespaces.7
|
||||||
|
Michael Kerrisk
|
||||||
|
Document /proc/PID/projid_map
|
||||||
|
|
||||||
|
ld.so.8
|
||||||
|
Michael Kerrisk
|
||||||
|
Document --list-tunables option added in glibc 2.33
|
||||||
|
|
||||||
|
|
||||||
Global changes
|
Global changes
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
A few pages
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: correct alphabetic order
|
||||||
|
|
||||||
|
A few pages
|
||||||
|
Michael Kerrisk
|
||||||
|
Place SEE ALSO entries in correct order
|
||||||
|
|
||||||
|
A few pages
|
||||||
|
Michael Kerrisk
|
||||||
|
Arrange .SH sections in correct order
|
||||||
|
|
||||||
|
Various pages
|
||||||
|
Michael Kerrisk
|
||||||
|
Fix EBADF error description
|
||||||
|
Make the description of the EBADF error for invalid 'dirfd' more
|
||||||
|
uniform. In particular, note that the error only occurs when the
|
||||||
|
pathname is relative, and that it occurs when the 'dirfd' is
|
||||||
|
neither valid *nor* has the value AT_FDCWD.
|
||||||
|
|
||||||
|
Various pages
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: combine errors into a single alphabetic list
|
||||||
|
These pages split out extra errors for some APIs into a separate
|
||||||
|
list. Probably, the pages are easier to ready if all errors are
|
||||||
|
combined into a single list.
|
||||||
|
|
||||||
|
Note that there still remain a few pages where the errors are
|
||||||
|
listed separately for different APIs. For the moment, it seems
|
||||||
|
best to leave those pages as is, since the error lists are
|
||||||
|
largely distinct in those pages.
|
||||||
|
|
||||||
|
VArious pages
|
||||||
|
Michael Kerrisk
|
||||||
|
Terminology clean-up: "mount point" ==> "mount"
|
||||||
|
Many times, these pages use the terminology "mount point", where
|
||||||
|
"mount" would be better. A "mount point" is the location at which
|
||||||
|
a mount is attached. A "mount" is an association between a
|
||||||
|
filesystem and a mount point.
|
||||||
|
|
||||||
|
accept.2
|
||||||
|
access.2
|
||||||
|
getpriority.2
|
||||||
|
mlock.2
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: combine errors into a single list
|
||||||
|
These pages split out errors into separate lists (perhaps per API,
|
||||||
|
perhaps "may" vs "shall", perhaps "Linux-specific" vs
|
||||||
|
standard(??)), but there's no good reason to do this. It makes
|
||||||
|
the error list harder to read, and is inconsistent with other
|
||||||
|
pages. So, combine the errors into a single list.
|
||||||
|
|
||||||
|
fanotify_mark.2
|
||||||
|
futimesat.2
|
||||||
|
mount_setattr.2
|
||||||
|
statx.2
|
||||||
|
symlink.2
|
||||||
|
mkfifo.3
|
||||||
|
Michael Kerrisk
|
||||||
|
Refer the reader to openat(2) for explanation of why 'dirfd' is useful
|
||||||
|
|
||||||
|
Various pages
|
||||||
|
Thomas Voss [Alejandro Colomar]
|
||||||
|
Consistently use '*argv[]'
|
||||||
|
|
||||||
|
|
||||||
Changes to individual pages
|
Changes to individual pages
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
iconv.1
|
||||||
|
iconvconfig.8
|
||||||
|
Michael Kerrisk [Christopher Yeleighton]
|
||||||
|
FILES: note that files may be under /usr/lib64 rather than /lib/64
|
||||||
|
See https://bugzilla.kernel.org/show_bug.cgi?id=214163
|
||||||
|
|
||||||
|
ldd.1
|
||||||
|
Alejandro Colomar [EmanueleTorre]
|
||||||
|
Fix example command
|
||||||
|
|
||||||
|
add_key.2
|
||||||
|
keyctl.2
|
||||||
|
request_key.2
|
||||||
|
Michael Kerrisk [Dominique Brazziel]
|
||||||
|
Note that the "libkeyutils" package provides <keyutils.h>
|
||||||
|
See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992377
|
||||||
|
|
||||||
|
close_range.2
|
||||||
|
Michael Kerrisk, Alejandro Colomar
|
||||||
|
Glibc 2.34 has added a close_range() wrapper
|
||||||
|
|
||||||
|
execve.2
|
||||||
|
Michael Kerrisk [Nora Platiel]
|
||||||
|
The pathname given to interpreter is not necessarily absolute
|
||||||
|
Michael Kerrisk
|
||||||
|
SEE ALSO: getauxval(3)
|
||||||
|
getauxval(3) is useful background regarding execve(2).
|
||||||
|
|
||||||
|
fanotify_mark.2
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: add missing EBADF error for invalid 'dirfd'
|
||||||
|
|
||||||
|
ioctl_tty.2
|
||||||
|
Pali Rohár [Alejandro Colomar]
|
||||||
|
Update DTR example
|
||||||
|
Do not include unused (and incompatible) header file termios.h and
|
||||||
|
include required header files for puts() and close() functions.
|
||||||
|
|
||||||
|
mount.2
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: add EPERM error for case where a mount is locked
|
||||||
|
Refer the reader to mount_namespaces(7) for details.
|
||||||
|
Michael Kerrisk
|
||||||
|
SEE ALSO: add mount_setattr(2)
|
||||||
|
|
||||||
|
open.2
|
||||||
|
Michael Kerrisk
|
||||||
|
Explicitly describe the EBADF error that can occur with openat()
|
||||||
|
In particular, specifying an invalid file descriptor number
|
||||||
|
in 'dirfd' can be used as a check that 'pathname' is absolute.
|
||||||
|
Michael Kerrisk
|
||||||
|
Clarify that openat()'s dirfd must be opened with O_RDONLY or O_PATH
|
||||||
|
Michael Kerrisk
|
||||||
|
Add mount_setattr(2) to list of 'dirfd' APIs
|
||||||
|
|
||||||
|
open_by_handle_at.2
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: add missing EBADF error for invalid 'dirfd'
|
||||||
|
|
||||||
|
readv2.2
|
||||||
|
Will Manley [Alejandro Colomar]
|
||||||
|
Note preadv2(..., RWF_NOWAIT) bug in BUGS section
|
||||||
|
|
||||||
|
readv.2
|
||||||
|
pipe.7
|
||||||
|
Michael Kerrisk [наб]
|
||||||
|
Make text on pipe writes more general to avoid a confusion in writev(2)
|
||||||
|
|
||||||
|
seccomp.2
|
||||||
|
Eric W. Biederman [Kees Cook]
|
||||||
|
Clarify that bad system calls kill the thread (not the process)
|
||||||
|
|
||||||
|
syscalls.2
|
||||||
|
Michael Kerrisk
|
||||||
|
Add quotactl_fd(); remove quotactl_path()
|
||||||
|
quotactl_path() was never wired up in Linux 5.13.
|
||||||
|
It was replaced instead by quotactl_fd(),
|
||||||
|
Michael Kerrisk
|
||||||
|
Add system calls that are new in 5.13
|
||||||
|
|
||||||
|
umount.2
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: add EINVAL for case where mount is locked
|
||||||
|
|
||||||
|
wait.2
|
||||||
|
Richard Palethorpe [Alejandro Colomar]
|
||||||
|
Add ESRCH for when pid == INT_MIN
|
||||||
|
Michael Kerrisk
|
||||||
|
ERRORS: document EAGAIN for waitid() on a PID file descriptor
|
||||||
|
|
||||||
|
getaddrinfo.3
|
||||||
|
Alejandro Colomar [Cristian Morales Vega]
|
||||||
|
Note that 'errno' is set in parallel with EAI_SYSTEM
|
||||||
|
|
||||||
|
getauxval.3
|
||||||
|
Michael Kerrisk
|
||||||
|
SEE ALSO: add execve(2)
|
||||||
|
|
||||||
|
getopt.3
|
||||||
|
James O. D. Hunt [Alejandro Colomar]
|
||||||
|
Further clarification of 'optstring'
|
||||||
|
|
||||||
|
pthread_setname_np.3
|
||||||
|
Michael Kerrisk [Alexis Wilke]
|
||||||
|
EXAMPLES: remove a bug by simplifying the code
|
||||||
|
|
||||||
|
strlen.3
|
||||||
|
wcslen.3
|
||||||
|
Michael Kerrisk [Alejandro Colomar, Jonny Grant]
|
||||||
|
Recommend alternatives where input buffer might not be null-terminated
|
||||||
|
|
||||||
|
strstr.3
|
||||||
|
Alejandro Colomar [Stefan Kanthak]
|
||||||
|
Document special case for empty needle
|
||||||
|
|
||||||
|
termios.3
|
||||||
|
Pali Rohár [Alejandro Colomar]
|
||||||
|
SPARC architecture has 4 different Bnnn constants
|
||||||
|
Pali Rohár [Alejandro Colomar]
|
||||||
|
Add information how to set baud rate to any other value
|
||||||
|
Pali Rohár [Alejandro Colomar]
|
||||||
|
Use bold style for Bnn and EXTn macro constants
|
||||||
|
Pali Rohár [Alejandro Colomar]
|
||||||
|
Document missing baud-rate constants
|
||||||
|
|
||||||
|
tsearch.3
|
||||||
|
Michael Kerrisk
|
||||||
|
NAME: add twalk_r
|
||||||
|
|
||||||
|
wcstok.3
|
||||||
|
Jakub Wilk
|
||||||
|
Fix type mismatch in the example
|
||||||
|
|
||||||
|
proc.5
|
||||||
|
Michael Kerrisk
|
||||||
|
Add /proc/PID/projid_map, referring reader to user_namespaces(7)
|
||||||
|
Michael Kerrisk
|
||||||
|
Remove duplicated /proc/[pid]/gid_map entry
|
||||||
|
|
||||||
|
mount_namespaces.7
|
||||||
|
Michael Kerrisk
|
||||||
|
Terminology clean-up: "mount point" ==> "mount"
|
||||||
|
Many times, this page uses the terminology "mount point", where
|
||||||
|
"mount" would be better. A "mount point" is the location at which
|
||||||
|
a mount is attached. A "mount" is an association between a
|
||||||
|
filesystem and a mount point.
|
||||||
|
Michael Kerrisk
|
||||||
|
SEE ALSO: add mount_setattr(2)
|
||||||
|
|
||||||
|
namespaces.7
|
||||||
|
Štěpán Němec [Alejandro Colomar]
|
||||||
|
Fix confusion caused by text reorganization
|
||||||
|
|
||||||
|
path_resolution.7
|
||||||
|
Michael Kerrisk [Askar Safin]
|
||||||
|
Improve description of trailing slashes
|
||||||
|
See https://bugzilla.kernel.org/show_bug.cgi?id=212385
|
||||||
|
|
||||||
|
posixoptions.7
|
||||||
|
Alejandro Colomar [Alan Peakall]
|
||||||
|
Fix legacy functions list (s/getcwd/getwd/)
|
||||||
|
|
||||||
|
user_namespaces.7
|
||||||
|
Kir Kolyshkin [Alejandro Colomar]
|
||||||
|
Fix a reference to a kernel document
|
||||||
|
Michael Kerrisk [Eric W. Biederman]
|
||||||
|
Add a definition of "global root"
|
||||||
|
|
||||||
|
vdso.7
|
||||||
|
Michael Kerrisk [Christophe Leroy]
|
||||||
|
Update CLOCK_REALTIME_COARSE + CLOCK_MONOTONIC_COARSE info for powerpc
|
||||||
|
Alejandro Colomar [Christophe Leroy]
|
||||||
|
Add y2038 compliant gettime for ppc/32
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
Begin3
|
Begin3
|
||||||
Title: Section 2, 3, 4, 5 and 7 man pages for Linux
|
Title: Section 2, 3, 4, 5 and 7 man pages for Linux
|
||||||
Version: 5.13
|
Version: 5.13
|
||||||
Entered-date: ????-??-??
|
Entered-date: 2021-08-27
|
||||||
Description: Linux manual pages
|
Description: Linux manual pages
|
||||||
Keywords: man pages
|
Keywords: man pages
|
||||||
Author: several
|
Author: several
|
||||||
Maintained-by: Michael Kerrisk <mtk.manpages@gmail.com>
|
Maintained-by: Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
Primary-site: http://www.kernel.org/pub/linux/docs/man-pages
|
Primary-site: http://www.kernel.org/pub/linux/docs/man-pages
|
||||||
????k man-pages-5.13.tar.gz
|
2825k man-pages-5.13.tar.gz
|
||||||
Copying-policy: several; the pages are all freely distributable as long as
|
Copying-policy: several; the pages are all freely distributable as long as
|
||||||
nroff source is provided
|
nroff source is provided
|
||||||
End
|
End
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
.\" <http://www.gnu.org/licenses/>.
|
.\" <http://www.gnu.org/licenses/>.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH ICONV 1 2020-06-09 "GNU" "Linux User Manual"
|
.TH ICONV 1 2021-08-27 "GNU" "Linux User Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
iconv \- convert text from one character encoding to another
|
iconv \- convert text from one character encoding to another
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -174,6 +174,10 @@ Usual system default gconv module configuration file.
|
||||||
.TP
|
.TP
|
||||||
.I /usr/lib/gconv/gconv\-modules.cache
|
.I /usr/lib/gconv/gconv\-modules.cache
|
||||||
Usual system gconv module configuration cache.
|
Usual system gconv module configuration cache.
|
||||||
|
.PP
|
||||||
|
Depending on the architecture,
|
||||||
|
the above files may instead be located at directories with the path prefix
|
||||||
|
.IR /usr/lib64 .
|
||||||
.SH CONFORMING TO
|
.SH CONFORMING TO
|
||||||
POSIX.1-2001.
|
POSIX.1-2001.
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
.\" May be distributed under the GNU General Public License
|
.\" May be distributed under the GNU General Public License
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH LDD 1 2021-03-22 "" "Linux Programmer's Manual"
|
.TH LDD 1 2021-08-27 "" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
ldd \- print shared object dependencies
|
ldd \- print shared object dependencies
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\" 2008-12-04, mtk, Add documentation of accept4()
|
.\" 2008-12-04, mtk, Add documentation of accept4()
|
||||||
.\"
|
.\"
|
||||||
.TH ACCEPT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH ACCEPT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
accept, accept4 \- accept a connection on a socket
|
accept, accept4 \- accept a connection on a socket
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
.\" Modified 2004-06-23 by Michael Kerrisk
|
.\" Modified 2004-06-23 by Michael Kerrisk
|
||||||
.\" 2007-06-10, mtk, various parts rewritten, and added BUGS section.
|
.\" 2007-06-10, mtk, various parts rewritten, and added BUGS section.
|
||||||
.\"
|
.\"
|
||||||
.TH ACCESS 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH ACCESS 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
access, faccessat, faccessat2 \- check user's permissions for a file
|
access, faccessat, faccessat2 \- check user's permissions for a file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
.\" 2 of the License, or (at your option) any later version.
|
.\" 2 of the License, or (at your option) any later version.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH ADD_KEY 2 2021-03-22 Linux "Linux Key Management Calls"
|
.TH ADD_KEY 2 2021-08-27 Linux "Linux Key Management Calls"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
add_key \- add a key to the kernel's key management facility
|
add_key \- add a key to the kernel's key management facility
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH ARCH_PRCTL 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH ARCH_PRCTL 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
arch_prctl \- set architecture-specific thread state
|
arch_prctl \- set architecture-specific thread state
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH BPF 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH BPF 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bpf \- perform a command on an extended BPF map or program
|
bpf \- perform a command on an extended BPF map or program
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
.\" <michael@cantor.informatik.rwth-aachen.de>: NFS details
|
.\" <michael@cantor.informatik.rwth-aachen.de>: NFS details
|
||||||
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
.TH CHMOD 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH CHMOD 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
chmod, fchmod, fchmodat \- change permissions of a file
|
chmod, fchmod, fchmodat \- change permissions of a file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
.\" (bsdgroups versus sysvgroups, and the effect of the parent
|
.\" (bsdgroups versus sysvgroups, and the effect of the parent
|
||||||
.\" directory's set-group-ID mode bit).
|
.\" directory's set-group-ID mode bit).
|
||||||
.\"
|
.\"
|
||||||
.TH CHOWN 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH CHOWN 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
chown, fchown, lchown, fchownat \- change ownership of a file
|
chown, fchown, lchown, fchownat \- change ownership of a file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH CLOSE_RANGE 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH CLOSE_RANGE 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
close_range \- close all file descriptors in a given range
|
close_range \- close all file descriptors in a given range
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH COPY_FILE_RANGE 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH COPY_FILE_RANGE 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
copy_file_range \- Copy a range of data from one file to another
|
copy_file_range \- Copy a range of data from one file to another
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
.\" 2007-09-14 Ollie Wild <aaw@google.com>, mtk
|
.\" 2007-09-14 Ollie Wild <aaw@google.com>, mtk
|
||||||
.\" Add text describing limits on command-line arguments + environment
|
.\" Add text describing limits on command-line arguments + environment
|
||||||
.\"
|
.\"
|
||||||
.TH EXECVE 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH EXECVE 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
execve \- execute program
|
execve \- execute program
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH EXECVEAT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH EXECVEAT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
execveat \- execute program relative to a directory file descriptor
|
execveat \- execute program relative to a directory file descriptor
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.TH FANOTIFY_MARK 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH FANOTIFY_MARK 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
fanotify_mark \- add, remove, or modify an fanotify mark on a filesystem
|
fanotify_mark \- add, remove, or modify an fanotify mark on a filesystem
|
||||||
object
|
object
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
.\" FIXME Do we need to add some text regarding Torvald Riegel's 2015-01-24 mail
|
.\" FIXME Do we need to add some text regarding Torvald Riegel's 2015-01-24 mail
|
||||||
.\" http://thread.gmane.org/gmane.linux.kernel/1703405/focus=1873242
|
.\" http://thread.gmane.org/gmane.linux.kernel/1703405/focus=1873242
|
||||||
.\"
|
.\"
|
||||||
.TH FUTEX 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH FUTEX 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
futex \- fast user-space locking
|
futex \- fast user-space locking
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH FUTIMESAT 2 2017-09-15 "Linux" "Linux Programmer's Manual"
|
.TH FUTIMESAT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
futimesat \- change timestamps of a file relative to a \
|
futimesat \- change timestamps of a file relative to a \
|
||||||
directory file descriptor
|
directory file descriptor
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
.\" Clarified meaning of 0 value for 'who' argument
|
.\" Clarified meaning of 0 value for 'who' argument
|
||||||
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
.TH GETPRIORITY 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH GETPRIORITY 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
getpriority, setpriority \- get/set program scheduling priority
|
getpriority, setpriority \- get/set program scheduling priority
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
.\" new _syscall(2) page, and substantially enhanced and rewrote
|
.\" new _syscall(2) page, and substantially enhanced and rewrote
|
||||||
.\" the remaining material on this page.
|
.\" the remaining material on this page.
|
||||||
.\"
|
.\"
|
||||||
.TH INTRO 2 2020-11-01 "Linux" "Linux Programmer's Manual"
|
.TH INTRO 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
intro \- introduction to system calls
|
intro \- introduction to system calls
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
.\" Distributed under GPL
|
.\" Distributed under GPL
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH IOCTL_TTY 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH IOCTL_TTY 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
ioctl_tty \- ioctls for terminals and serial lines
|
ioctl_tty \- ioctls for terminals and serial lines
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH KEYCTL 2 2021-03-22 Linux "Linux Key Management Calls"
|
.TH KEYCTL 2 2021-08-27 Linux "Linux Key Management Calls"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
keyctl \- manipulate the kernel's key management facility
|
keyctl \- manipulate the kernel's key management facility
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
|
.\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
|
||||||
.\"
|
.\"
|
||||||
.TH LINK 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH LINK 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
link, linkat \- make a new name for a file
|
link, linkat \- make a new name for a file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH MEMBARRIER 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH MEMBARRIER 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
membarrier \- issue memory barriers on a set of threads
|
membarrier \- issue memory barriers on a set of threads
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
.\" Public License. It comes with NO WARRANTY.
|
.\" Public License. It comes with NO WARRANTY.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH MKDIR 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH MKDIR 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mkdir, mkdirat \- create a directory
|
mkdir, mkdirat \- create a directory
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
.\" Modified 2003-04-23 by Michael Kerrisk
|
.\" Modified 2003-04-23 by Michael Kerrisk
|
||||||
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
.TH MKNOD 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH MKNOD 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mknod, mknodat \- create a special or ordinary file
|
mknod, mknodat \- create a special or ordinary file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" <http://www.gnu.org/licenses/>.
|
.\" <http://www.gnu.org/licenses/>.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH MLOCK 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH MLOCK 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mlock, mlock2, munlock, mlockall, munlockall \- lock and unlock memory
|
mlock, mlock2, munlock, mlockall, munlockall \- lock and unlock memory
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
17
man2/mount.2
17
man2/mount.2
|
@ -37,7 +37,7 @@
|
||||||
.\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
|
.\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
|
||||||
.\" 2008-10-06, mtk: Add discussion of namespaces.
|
.\" 2008-10-06, mtk: Add discussion of namespaces.
|
||||||
.\"
|
.\"
|
||||||
.TH MOUNT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH MOUNT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mount \- mount filesystem
|
mount \- mount filesystem
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -824,6 +824,21 @@ is out of range.
|
||||||
.B EPERM
|
.B EPERM
|
||||||
The caller does not have the required privileges.
|
The caller does not have the required privileges.
|
||||||
.TP
|
.TP
|
||||||
|
.B EPERM
|
||||||
|
An attempt was made to modify
|
||||||
|
.RB ( MS_REMOUNT )
|
||||||
|
the
|
||||||
|
.BR MS_RDONLY ,
|
||||||
|
.BR MS_NOSUID ,
|
||||||
|
or
|
||||||
|
.BR MS_NOEXEC
|
||||||
|
flag, or one of the "atime" flags
|
||||||
|
.RB ( MS_NOATIME ,
|
||||||
|
.BR MS_NODIRATIME ,
|
||||||
|
.BR MS_RELATIME )
|
||||||
|
of an existing mount, but the mount is locked; see
|
||||||
|
.BR mount_namespaces (7).
|
||||||
|
.TP
|
||||||
.B EROFS
|
.B EROFS
|
||||||
Mounting a read-only filesystem was attempted without giving the
|
Mounting a read-only filesystem was attempted without giving the
|
||||||
.B MS_RDONLY
|
.B MS_RDONLY
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH MOUNT_SETATTR 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH MOUNT_SETATTR 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mount_setattr \- change properties of a mount or mount tree
|
mount_setattr \- change properties of a mount or mount tree
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
.\" FIXME . Apr 08: The next POSIX revision has O_EXEC, O_SEARCH, and
|
.\" FIXME . Apr 08: The next POSIX revision has O_EXEC, O_SEARCH, and
|
||||||
.\" O_TTYINIT. Eventually these may need to be documented. --mtk
|
.\" O_TTYINIT. Eventually these may need to be documented. --mtk
|
||||||
.\"
|
.\"
|
||||||
.TH OPEN 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH OPEN 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
open, openat, creat \- open and possibly create a file
|
open, openat, creat \- open and possibly create a file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH OPEN_BY_HANDLE_AT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH OPEN_BY_HANDLE_AT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
name_to_handle_at, open_by_handle_at \- obtain handle
|
name_to_handle_at, open_by_handle_at \- obtain handle
|
||||||
for a pathname and open file via a handle
|
for a pathname and open file via a handle
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
.\" This document is based on the perf_event.h header file, the
|
.\" This document is based on the perf_event.h header file, the
|
||||||
.\" tools/perf/design.txt file, and a lot of bitter experience.
|
.\" tools/perf/design.txt file, and a lot of bitter experience.
|
||||||
.\"
|
.\"
|
||||||
.TH PERF_EVENT_OPEN 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH PERF_EVENT_OPEN 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
perf_event_open \- set up performance monitoring
|
perf_event_open \- set up performance monitoring
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH PIDFD_OPEN 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH PIDFD_OPEN 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pidfd_open \- obtain a file descriptor that refers to a process
|
pidfd_open \- obtain a file descriptor that refers to a process
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
.\" 2011-09-20, Guillem Jover <guillem@hadrons.org>:
|
.\" 2011-09-20, Guillem Jover <guillem@hadrons.org>:
|
||||||
.\" Added text on dynamically allocating buffer + example program
|
.\" Added text on dynamically allocating buffer + example program
|
||||||
.\"
|
.\"
|
||||||
.TH READLINK 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH READLINK 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
readlink, readlinkat \- read value of a symbolic link
|
readlink, readlinkat \- read value of a symbolic link
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
.\" add more details.
|
.\" add more details.
|
||||||
.\" 2010-11-16, mtk, Added documentation of preadv() and pwritev()
|
.\" 2010-11-16, mtk, Added documentation of preadv() and pwritev()
|
||||||
.\"
|
.\"
|
||||||
.TH READV 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH READV 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
readv, writev, preadv, pwritev, preadv2, pwritev2 \- read or write data into multiple buffers
|
readv, writev, preadv, pwritev, preadv2, pwritev2 \- read or write data into multiple buffers
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
.\" Modified Thu Mar 3 09:49:35 2005 by Michael Haardt <michael@moria.de>
|
.\" Modified Thu Mar 3 09:49:35 2005 by Michael Haardt <michael@moria.de>
|
||||||
.\" 2007-03-25, mtk, added various text to DESCRIPTION.
|
.\" 2007-03-25, mtk, added various text to DESCRIPTION.
|
||||||
.\"
|
.\"
|
||||||
.TH RENAME 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH RENAME 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
rename, renameat, renameat2 \- change the name or location of a file
|
rename, renameat, renameat2 \- change the name or location of a file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
.\" 2 of the License, or (at your option) any later version.
|
.\" 2 of the License, or (at your option) any later version.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH REQUEST_KEY 2 2021-03-22 Linux "Linux Key Management Calls"
|
.TH REQUEST_KEY 2 2021-08-27 Linux "Linux Key Management Calls"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
request_key \- request a key from the kernel's key management facility
|
request_key \- request a key from the kernel's key management facility
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH SECCOMP 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH SECCOMP 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
seccomp \- operate on Secure Computing state of the process
|
seccomp \- operate on Secure Computing state of the process
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
.\" 2015-01-17, Kees Cook <keescook@chromium.org>
|
.\" 2015-01-17, Kees Cook <keescook@chromium.org>
|
||||||
.\" Added notes on ptrace SIGTRAP and SYS_SECCOMP.
|
.\" Added notes on ptrace SIGTRAP and SYS_SECCOMP.
|
||||||
.\"
|
.\"
|
||||||
.TH SIGACTION 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH SIGACTION 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
sigaction, rt_sigaction \- examine and change a signal action
|
sigaction, rt_sigaction \- examine and change a signal action
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
.\" 2007-06-08 mtk: Added example program
|
.\" 2007-06-08 mtk: Added example program
|
||||||
.\" 2007-07-05 mtk: Added details on underlying system call interfaces
|
.\" 2007-07-05 mtk: Added details on underlying system call interfaces
|
||||||
.\"
|
.\"
|
||||||
.TH STAT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH STAT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
stat, fstat, lstat, fstatat \- get file status
|
stat, fstat, lstat, fstatat \- get file status
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH STATX 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH STATX 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
statx \- get file status (extended)
|
statx \- get file status (extended)
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
|
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
|
||||||
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
.TH SYMLINK 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH SYMLINK 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
symlink, symlinkat \- make a new name for a file
|
symlink, symlinkat \- make a new name for a file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH SYSCALLS 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH SYSCALLS 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
syscalls \- Linux system calls
|
syscalls \- Linux system calls
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
.\" 2008-10-06, mtk: Created this as a new page by splitting
|
.\" 2008-10-06, mtk: Created this as a new page by splitting
|
||||||
.\" umount/umount2 material out of mount.2
|
.\" umount/umount2 material out of mount.2
|
||||||
.\"
|
.\"
|
||||||
.TH UMOUNT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH UMOUNT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
umount, umount2 \- unmount filesystem
|
umount, umount2 \- unmount filesystem
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -141,6 +141,11 @@ points outside the user address space.
|
||||||
is not a mount point.
|
is not a mount point.
|
||||||
.TP
|
.TP
|
||||||
.B EINVAL
|
.B EINVAL
|
||||||
|
.I target
|
||||||
|
is locked; see
|
||||||
|
.BR mount_namespaces (7).
|
||||||
|
.TP
|
||||||
|
.B EINVAL
|
||||||
.BR umount2 ()
|
.BR umount2 ()
|
||||||
was called with
|
was called with
|
||||||
.B MNT_EXPIRE
|
.B MNT_EXPIRE
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
.\" Modified 2001-05-17 by aeb
|
.\" Modified 2001-05-17 by aeb
|
||||||
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
.TH UNLINK 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH UNLINK 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
unlink, unlinkat \- delete a name and possibly the file it refers to
|
unlink, unlinkat \- delete a name and possibly the file it refers to
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH UTIMENSAT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH UTIMENSAT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
utimensat, futimens \- change file timestamps with nanosecond precision
|
utimensat, futimens \- change file timestamps with nanosecond precision
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
.\" 2005-05-10, mtk, __W* flags can't be used with waitid()
|
.\" 2005-05-10, mtk, __W* flags can't be used with waitid()
|
||||||
.\" 2008-07-04, mtk, removed erroneous text about SA_NOCLDSTOP
|
.\" 2008-07-04, mtk, removed erroneous text about SA_NOCLDSTOP
|
||||||
.\"
|
.\"
|
||||||
.TH WAIT 2 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH WAIT 2 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
wait, waitpid, waitid \- wait for process to change state
|
wait, waitpid, waitid \- wait for process to change state
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
.\" 386BSD man pages
|
.\" 386BSD man pages
|
||||||
.\" Modified Mon Mar 29 22:41:16 1993, David Metcalfe
|
.\" Modified Mon Mar 29 22:41:16 1993, David Metcalfe
|
||||||
.\" Modified Sat Jul 24 21:35:16 1993, Rik Faith (faith@cs.unc.edu)
|
.\" Modified Sat Jul 24 21:35:16 1993, Rik Faith (faith@cs.unc.edu)
|
||||||
.TH BSEARCH 3 2021-03-22 "" "Linux Programmer's Manual"
|
.TH BSEARCH 3 2021-08-27 "" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bsearch \- binary search of a sorted array
|
bsearch \- binary search of a sorted array
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
|
.\" Modified 2000-07-22 by Nicolás Lichtmaier <nick@debian.org>
|
||||||
.\" Modified 2001-10-16 by John Levon <moz@compsoc.man.ac.uk>
|
.\" Modified 2001-10-16 by John Levon <moz@compsoc.man.ac.uk>
|
||||||
.\"
|
.\"
|
||||||
.TH FFLUSH 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH FFLUSH 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
fflush \- flush a stream
|
fflush \- flush a stream
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
.\" FIXME . glibc's 2.9 NEWS file documents DCCP and UDP-lite support
|
.\" FIXME . glibc's 2.9 NEWS file documents DCCP and UDP-lite support
|
||||||
.\" and is SCTP support now also there?
|
.\" and is SCTP support now also there?
|
||||||
.\"
|
.\"
|
||||||
.TH GETADDRINFO 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH GETADDRINFO 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
getaddrinfo, freeaddrinfo, gai_strerror \- network address and
|
getaddrinfo, freeaddrinfo, gai_strerror \- network address and
|
||||||
service translation
|
service translation
|
||||||
|
@ -583,9 +583,9 @@ and
|
||||||
respectively).
|
respectively).
|
||||||
.TP
|
.TP
|
||||||
.B EAI_SYSTEM
|
.B EAI_SYSTEM
|
||||||
Other system error, check
|
Other system error;
|
||||||
.I errno
|
.I errno
|
||||||
for details.
|
is set to indicate the error.
|
||||||
.PP
|
.PP
|
||||||
The
|
The
|
||||||
.BR gai_strerror ()
|
.BR gai_strerror ()
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
.\"
|
.\"
|
||||||
.\" See also https://lwn.net/Articles/519085/
|
.\" See also https://lwn.net/Articles/519085/
|
||||||
.\"
|
.\"
|
||||||
.TH GETAUXVAL 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH GETAUXVAL 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
getauxval \- retrieve a value from the auxiliary vector
|
getauxval \- retrieve a value from the auxiliary vector
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
.\" the start of optstring
|
.\" the start of optstring
|
||||||
.\" Modified 2006-12-15, mtk, Added getopt() example program.
|
.\" Modified 2006-12-15, mtk, Added getopt() example program.
|
||||||
.\"
|
.\"
|
||||||
.TH GETOPT 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH GETOPT 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
getopt, getopt_long, getopt_long_only,
|
getopt, getopt_long, getopt_long_only,
|
||||||
optarg, optind, opterr, optopt \- Parse command-line options
|
optarg, optind, opterr, optopt \- Parse command-line options
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH GETSUBOPT 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH GETSUBOPT 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
getsubopt \- parse suboption arguments from a string
|
getsubopt \- parse suboption arguments from a string
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
.\"
|
.\"
|
||||||
.\" changed section from 2 to 3, aeb, 950919
|
.\" changed section from 2 to 3, aeb, 950919
|
||||||
.\"
|
.\"
|
||||||
.TH MKFIFO 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH MKFIFO 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mkfifo, mkfifoat \- make a FIFO special file (a named pipe)
|
mkfifo, mkfifoat \- make a FIFO special file (a named pipe)
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH PTHREAD_MUTEX_CONSISTENT 3 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH PTHREAD_MUTEX_CONSISTENT 3 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pthread_mutex_consistent \- make a robust mutex consistent
|
pthread_mutex_consistent \- make a robust mutex consistent
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH PTHREAD_SETNAME_NP 3 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH PTHREAD_SETNAME_NP 3 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pthread_setname_np, pthread_getname_np \- set/get the name of a thread
|
pthread_setname_np, pthread_getname_np \- set/get the name of a thread
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH PTHREAD_TRYJOIN_NP 3 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH PTHREAD_TRYJOIN_NP 3 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pthread_tryjoin_np, pthread_timedjoin_np \- try to join with a
|
pthread_tryjoin_np, pthread_timedjoin_np \- try to join with a
|
||||||
terminated thread
|
terminated thread
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
.\" <http://www.gnu.org/licenses/>.
|
.\" <http://www.gnu.org/licenses/>.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH SCANDIR 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH SCANDIR 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
scandir, scandirat, alphasort, versionsort \- scan
|
scandir, scandirat, alphasort, versionsort \- scan
|
||||||
a directory for matching entries
|
a directory for matching entries
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH SEM_WAIT 3 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH SEM_WAIT 3 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
sem_wait, sem_timedwait, sem_trywait \- lock a semaphore
|
sem_wait, sem_timedwait, sem_trywait \- lock a semaphore
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.\"
|
.\"
|
||||||
.TH STAILQ 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH STAILQ 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
.\"SIMPLEQ_CONCAT,
|
.\"SIMPLEQ_CONCAT,
|
||||||
SIMPLEQ_EMPTY,
|
SIMPLEQ_EMPTY,
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
|
.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
|
||||||
.\" 386BSD man pages
|
.\" 386BSD man pages
|
||||||
.\" Modified Sat Jul 24 18:02:26 1993 by Rik Faith (faith@cs.unc.edu)
|
.\" Modified Sat Jul 24 18:02:26 1993 by Rik Faith (faith@cs.unc.edu)
|
||||||
.TH STRLEN 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH STRLEN 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
strlen \- calculate the length of a string
|
strlen \- calculate the length of a string
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
.\" Added history, aeb, 980113.
|
.\" Added history, aeb, 980113.
|
||||||
.\" 2005-05-05 mtk: added strcasestr()
|
.\" 2005-05-05 mtk: added strcasestr()
|
||||||
.\"
|
.\"
|
||||||
.TH STRSTR 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH STRSTR 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
strstr, strcasestr \- locate a substring
|
strstr, strcasestr \- locate a substring
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
.\" Enhanced the discussion of "raw" mode for cfmakeraw().
|
.\" Enhanced the discussion of "raw" mode for cfmakeraw().
|
||||||
.\" Document CMSPAR.
|
.\" Document CMSPAR.
|
||||||
.\"
|
.\"
|
||||||
.TH TERMIOS 3 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH TERMIOS 3 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
|
termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
|
||||||
cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \-
|
cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \-
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH TSEARCH 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH TSEARCH 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
tsearch, tfind, tdelete, twalk, twalk_r, tdestroy \- manage a binary search tree
|
tsearch, tfind, tdelete, twalk, twalk_r, tdestroy \- manage a binary search tree
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
|
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
|
||||||
.\" ISO/IEC 9899:1999
|
.\" ISO/IEC 9899:1999
|
||||||
.\"
|
.\"
|
||||||
.TH WCSLEN 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH WCSLEN 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
wcslen \- determine the length of a wide-character string
|
wcslen \- determine the length of a wide-character string
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
|
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
|
||||||
.\" ISO/IEC 9899:1999
|
.\" ISO/IEC 9899:1999
|
||||||
.\"
|
.\"
|
||||||
.TH WCSTOK 3 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH WCSTOK 3 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
wcstok \- split wide-character string into tokens
|
wcstok \- split wide-character string into tokens
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
.\" <http://www.gnu.org/licenses/>.
|
.\" <http://www.gnu.org/licenses/>.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH WORDEXP 3 2021-03-22 "" "Linux Programmer's Manual"
|
.TH WORDEXP 3 2021-08-27 "" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
wordexp, wordfree \- perform word expansion like a posix-shell
|
wordexp, wordfree \- perform word expansion like a posix-shell
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
.\" to see what information could be imported from that file
|
.\" to see what information could be imported from that file
|
||||||
.\" into this file.
|
.\" into this file.
|
||||||
.\"
|
.\"
|
||||||
.TH PROC 5 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH PROC 5 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
proc \- process information pseudo-filesystem
|
proc \- process information pseudo-filesystem
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
.\" other capabilities where the permitted or inheritable bit is set.
|
.\" other capabilities where the permitted or inheritable bit is set.
|
||||||
.\" 2011-09-07, mtk/Serge hallyn: Add CAP_SYSLOG
|
.\" 2011-09-07, mtk/Serge hallyn: Add CAP_SYSLOG
|
||||||
.\"
|
.\"
|
||||||
.TH CAPABILITIES 7 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH CAPABILITIES 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
capabilities \- overview of Linux capabilities
|
capabilities \- overview of Linux capabilities
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH CGROUPS 7 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH CGROUPS 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
cgroups \- Linux control groups
|
cgroups \- Linux control groups
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.TH FANOTIFY 7 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH FANOTIFY 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
fanotify \- monitoring filesystem events
|
fanotify \- monitoring filesystem events
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.\" Copyright (c) 2016, 2019 by Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Copyright (c) 2016, 2019, 2021 by Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
.\" %%%LICENSE_START(VERBATIM)
|
.\" %%%LICENSE_START(VERBATIM)
|
||||||
.\" Permission is granted to make and distribute verbatim copies of this
|
.\" Permission is granted to make and distribute verbatim copies of this
|
||||||
|
@ -23,14 +23,14 @@
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.\"
|
.\"
|
||||||
.TH MOUNT_NAMESPACES 7 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH MOUNT_NAMESPACES 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mount_namespaces \- overview of Linux mount namespaces
|
mount_namespaces \- overview of Linux mount namespaces
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
For an overview of namespaces, see
|
For an overview of namespaces, see
|
||||||
.BR namespaces (7).
|
.BR namespaces (7).
|
||||||
.PP
|
.PP
|
||||||
Mount namespaces provide isolation of the list of mount points seen
|
Mount namespaces provide isolation of the list of mounts seen
|
||||||
by the processes in each namespace instance.
|
by the processes in each namespace instance.
|
||||||
Thus, the processes in each of the mount namespace instances
|
Thus, the processes in each of the mount namespace instances
|
||||||
will see distinct single-directory hierarchies.
|
will see distinct single-directory hierarchies.
|
||||||
|
@ -56,103 +56,26 @@ with the
|
||||||
.BR CLONE_NEWNS
|
.BR CLONE_NEWNS
|
||||||
flag.
|
flag.
|
||||||
When a new mount namespace is created,
|
When a new mount namespace is created,
|
||||||
its mount point list is initialized as follows:
|
its mount list is initialized as follows:
|
||||||
.IP * 3
|
.IP * 3
|
||||||
If the namespace is created using
|
If the namespace is created using
|
||||||
.BR clone (2),
|
.BR clone (2),
|
||||||
the mount point list of the child's namespace is a copy
|
the mount list of the child's namespace is a copy
|
||||||
of the mount point list in the parent's namespace.
|
of the mount list in the parent process's mount namespace.
|
||||||
.IP *
|
.IP *
|
||||||
If the namespace is created using
|
If the namespace is created using
|
||||||
.BR unshare (2),
|
.BR unshare (2),
|
||||||
the mount point list of the new namespace is a copy of
|
the mount list of the new namespace is a copy of
|
||||||
the mount point list in the caller's previous mount namespace.
|
the mount list in the caller's previous mount namespace.
|
||||||
.PP
|
.PP
|
||||||
Subsequent modifications to the mount point list
|
Subsequent modifications to the mount list
|
||||||
.RB ( mount (2)
|
.RB ( mount (2)
|
||||||
and
|
and
|
||||||
.BR umount (2))
|
.BR umount (2))
|
||||||
in either mount namespace will not (by default) affect the
|
in either mount namespace will not (by default) affect the
|
||||||
mount point list seen in the other namespace
|
mount list seen in the other namespace
|
||||||
(but see the following discussion of shared subtrees).
|
(but see the following discussion of shared subtrees).
|
||||||
.\"
|
.\"
|
||||||
.\" ============================================================
|
|
||||||
.\"
|
|
||||||
.SS Restrictions on mount namespaces
|
|
||||||
Note the following points with respect to mount namespaces:
|
|
||||||
.IP * 3
|
|
||||||
Each mount namespace has an owner user namespace.
|
|
||||||
As explained above, when a new mount namespace is created,
|
|
||||||
its mount point list is initialized as a copy of the mount point list
|
|
||||||
of another mount namespace.
|
|
||||||
If the new namespace and the namespace from which the mount point list
|
|
||||||
was copied are owned by different user namespaces,
|
|
||||||
then the new mount namespace is considered
|
|
||||||
.IR "less privileged" .
|
|
||||||
.IP *
|
|
||||||
When creating a less privileged mount namespace,
|
|
||||||
shared mounts are reduced to slave mounts.
|
|
||||||
(Shared and slave mounts are discussed below.)
|
|
||||||
This ensures that mappings performed in less
|
|
||||||
privileged mount namespaces will not propagate to more privileged
|
|
||||||
mount namespaces.
|
|
||||||
.IP *
|
|
||||||
Mounts that come as a single unit from a more privileged mount namespace are
|
|
||||||
locked together and may not be separated in a less privileged mount
|
|
||||||
namespace.
|
|
||||||
(The
|
|
||||||
.BR unshare (2)
|
|
||||||
.B CLONE_NEWNS
|
|
||||||
operation brings across all of the mounts from the original
|
|
||||||
mount namespace as a single unit,
|
|
||||||
and recursive mounts that propagate between
|
|
||||||
mount namespaces propagate as a single unit.)
|
|
||||||
.IP *
|
|
||||||
The
|
|
||||||
.BR mount (2)
|
|
||||||
flags
|
|
||||||
.BR MS_RDONLY ,
|
|
||||||
.BR MS_NOSUID ,
|
|
||||||
.BR MS_NOEXEC ,
|
|
||||||
and the "atime" flags
|
|
||||||
.RB ( MS_NOATIME ,
|
|
||||||
.BR MS_NODIRATIME ,
|
|
||||||
.BR MS_RELATIME )
|
|
||||||
settings become locked
|
|
||||||
.\" commit 9566d6742852c527bf5af38af5cbb878dad75705
|
|
||||||
.\" Author: Eric W. Biederman <ebiederm@xmission.com>
|
|
||||||
.\" Date: Mon Jul 28 17:26:07 2014 -0700
|
|
||||||
.\"
|
|
||||||
.\" mnt: Correct permission checks in do_remount
|
|
||||||
.\"
|
|
||||||
when propagated from a more privileged to
|
|
||||||
a less privileged mount namespace,
|
|
||||||
and may not be changed in the less privileged mount namespace.
|
|
||||||
.IP *
|
|
||||||
.\" (As of 3.18-rc1 (in Al Viro's 2014-08-30 vfs.git#for-next tree))
|
|
||||||
A file or directory that is a mount point in one namespace that is not
|
|
||||||
a mount point in another namespace, may be renamed, unlinked, or removed
|
|
||||||
.RB ( rmdir (2))
|
|
||||||
in the mount namespace in which it is not a mount point
|
|
||||||
(subject to the usual permission checks).
|
|
||||||
Consequently, the mount point is removed in the mount namespace
|
|
||||||
where it was a mount point.
|
|
||||||
.IP
|
|
||||||
Previously (before Linux 3.18),
|
|
||||||
.\" mtk: The change was in Linux 3.18, I think, with this commit:
|
|
||||||
.\" commit 8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe
|
|
||||||
.\" Author: Eric W. Biederman <ebiederman@twitter.com>
|
|
||||||
.\" Date: Tue Oct 1 18:33:48 2013 -0700
|
|
||||||
.\"
|
|
||||||
.\" vfs: Lazily remove mounts on unlinked files and directories.
|
|
||||||
attempting to unlink, rename, or remove a file or directory
|
|
||||||
that was a mount point in another mount namespace would result in the error
|
|
||||||
.BR EBUSY .
|
|
||||||
That behavior had technical problems of enforcement (e.g., for NFS)
|
|
||||||
and permitted denial-of-service attacks against more privileged users
|
|
||||||
(i.e., preventing individual files from being updated
|
|
||||||
by bind mounting on top of them).
|
|
||||||
.\"
|
|
||||||
.SH SHARED SUBTREES
|
.SH SHARED SUBTREES
|
||||||
After the implementation of mount namespaces was completed,
|
After the implementation of mount namespaces was completed,
|
||||||
experience showed that the isolation that they provided was,
|
experience showed that the isolation that they provided was,
|
||||||
|
@ -165,35 +88,35 @@ the shared subtree feature was introduced in Linux 2.6.15.
|
||||||
This feature allows for automatic, controlled propagation of mount and unmount
|
This feature allows for automatic, controlled propagation of mount and unmount
|
||||||
.I events
|
.I events
|
||||||
between namespaces
|
between namespaces
|
||||||
(or, more precisely, between the members of a
|
(or, more precisely, between the mounts that are members of a
|
||||||
.IR "peer group"
|
.IR "peer group"
|
||||||
that are propagating events to one another).
|
that are propagating events to one another).
|
||||||
.PP
|
.PP
|
||||||
Each mount point is marked (via
|
Each mount is marked (via
|
||||||
.BR mount (2))
|
.BR mount (2))
|
||||||
as having one of the following
|
as having one of the following
|
||||||
.IR "propagation types" :
|
.IR "propagation types" :
|
||||||
.TP
|
.TP
|
||||||
.BR MS_SHARED
|
.BR MS_SHARED
|
||||||
This mount point shares events with members of a peer group.
|
This mount shares events with members of a peer group.
|
||||||
Mount and unmount events immediately under this mount point will propagate
|
Mount and unmount events immediately under this mount will propagate
|
||||||
to the other mount points that are members of the peer group.
|
to the other mounts that are members of the peer group.
|
||||||
.I Propagation
|
.I Propagation
|
||||||
here means that the same mount or unmount will automatically occur
|
here means that the same mount or unmount will automatically occur
|
||||||
under all of the other mount points in the peer group.
|
under all of the other mounts in the peer group.
|
||||||
Conversely, mount and unmount events that take place under
|
Conversely, mount and unmount events that take place under
|
||||||
peer mount points will propagate to this mount point.
|
peer mounts will propagate to this mount.
|
||||||
.TP
|
.TP
|
||||||
.BR MS_PRIVATE
|
.BR MS_PRIVATE
|
||||||
This mount point is private; it does not have a peer group.
|
This mount is private; it does not have a peer group.
|
||||||
Mount and unmount events do not propagate into or out of this mount point.
|
Mount and unmount events do not propagate into or out of this mount.
|
||||||
.TP
|
.TP
|
||||||
.BR MS_SLAVE
|
.BR MS_SLAVE
|
||||||
Mount and unmount events propagate into this mount point from
|
Mount and unmount events propagate into this mount from
|
||||||
a (master) shared peer group.
|
a (master) shared peer group.
|
||||||
Mount and unmount events under this mount point do not propagate to any peer.
|
Mount and unmount events under this mount do not propagate to any peer.
|
||||||
.IP
|
.IP
|
||||||
Note that a mount point can be the slave of another peer group
|
Note that a mount can be the slave of another peer group
|
||||||
while at the same time sharing mount and unmount events
|
while at the same time sharing mount and unmount events
|
||||||
with a peer group of which it is a member.
|
with a peer group of which it is a member.
|
||||||
(More precisely, one peer group can be the slave of another peer group.)
|
(More precisely, one peer group can be the slave of another peer group.)
|
||||||
|
@ -222,45 +145,45 @@ For a discussion of the propagation type assigned to a new mount,
|
||||||
see NOTES.
|
see NOTES.
|
||||||
.PP
|
.PP
|
||||||
The propagation type is a per-mount-point setting;
|
The propagation type is a per-mount-point setting;
|
||||||
some mount points may be marked as shared
|
some mounts may be marked as shared
|
||||||
(with each shared mount point being a member of a distinct peer group),
|
(with each shared mount being a member of a distinct peer group),
|
||||||
while others are private
|
while others are private
|
||||||
(or slaved or unbindable).
|
(or slaved or unbindable).
|
||||||
.PP
|
.PP
|
||||||
Note that a mount's propagation type determines whether
|
Note that a mount's propagation type determines whether
|
||||||
mounts and unmounts of mount points
|
mounts and unmounts of mounts
|
||||||
.I "immediately under"
|
.I "immediately under"
|
||||||
the mount point are propagated.
|
the mount are propagated.
|
||||||
Thus, the propagation type does not affect propagation of events for
|
Thus, the propagation type does not affect propagation of events for
|
||||||
grandchildren and further removed descendant mount points.
|
grandchildren and further removed descendant mounts.
|
||||||
What happens if the mount point itself is unmounted is determined by
|
What happens if the mount itself is unmounted is determined by
|
||||||
the propagation type that is in effect for the
|
the propagation type that is in effect for the
|
||||||
.I parent
|
.I parent
|
||||||
of the mount point.
|
of the mount.
|
||||||
.PP
|
.PP
|
||||||
Members are added to a
|
Members are added to a
|
||||||
.IR "peer group"
|
.IR "peer group"
|
||||||
when a mount point is marked as shared and either:
|
when a mount is marked as shared and either:
|
||||||
.IP * 3
|
.IP * 3
|
||||||
the mount point is replicated during the creation of a new mount namespace; or
|
the mount is replicated during the creation of a new mount namespace; or
|
||||||
.IP *
|
.IP *
|
||||||
a new bind mount is created from the mount point.
|
a new bind mount is created from the mount.
|
||||||
.PP
|
.PP
|
||||||
In both of these cases, the new mount point joins the peer group
|
In both of these cases, the new mount joins the peer group
|
||||||
of which the existing mount point is a member.
|
of which the existing mount is a member.
|
||||||
.PP
|
.PP
|
||||||
A new peer group is also created when a child mount point is created under
|
A new peer group is also created when a child mount is created under
|
||||||
an existing mount point that is marked as shared.
|
an existing mount that is marked as shared.
|
||||||
In this case, the new child mount point is also marked as shared and
|
In this case, the new child mount is also marked as shared and
|
||||||
the resulting peer group consists of all the mount points
|
the resulting peer group consists of all the mounts
|
||||||
that are replicated under the peers of parent mount.
|
that are replicated under the peers of parent mounts.
|
||||||
.PP
|
.PP
|
||||||
A mount ceases to be a member of a peer group when either
|
A mount ceases to be a member of a peer group when either
|
||||||
the mount is explicitly unmounted,
|
the mount is explicitly unmounted,
|
||||||
or when the mount is implicitly unmounted because a mount namespace is removed
|
or when the mount is implicitly unmounted because a mount namespace is removed
|
||||||
(because it has no more member processes).
|
(because it has no more member processes).
|
||||||
.PP
|
.PP
|
||||||
The propagation type of the mount points in a mount namespace
|
The propagation type of the mounts in a mount namespace
|
||||||
can be discovered via the "optional fields" exposed in
|
can be discovered via the "optional fields" exposed in
|
||||||
.IR /proc/[pid]/mountinfo .
|
.IR /proc/[pid]/mountinfo .
|
||||||
(See
|
(See
|
||||||
|
@ -270,11 +193,11 @@ The following tags can appear in the optional fields
|
||||||
for a record in that file:
|
for a record in that file:
|
||||||
.TP
|
.TP
|
||||||
.I shared:X
|
.I shared:X
|
||||||
This mount point is shared in peer group
|
This mount is shared in peer group
|
||||||
.IR X .
|
.IR X .
|
||||||
Each peer group has a unique ID that is automatically
|
Each peer group has a unique ID that is automatically
|
||||||
generated by the kernel,
|
generated by the kernel,
|
||||||
and all mount points in the same peer group will show the same ID.
|
and all mounts in the same peer group will show the same ID.
|
||||||
(These IDs are assigned starting from the value 1,
|
(These IDs are assigned starting from the value 1,
|
||||||
and may be recycled when a peer group ceases to have any members.)
|
and may be recycled when a peer group ceases to have any members.)
|
||||||
.TP
|
.TP
|
||||||
|
@ -309,7 +232,7 @@ This is an unbindable mount.
|
||||||
If none of the above tags is present, then this is a private mount.
|
If none of the above tags is present, then this is a private mount.
|
||||||
.SS MS_SHARED and MS_PRIVATE example
|
.SS MS_SHARED and MS_PRIVATE example
|
||||||
Suppose that on a terminal in the initial mount namespace,
|
Suppose that on a terminal in the initial mount namespace,
|
||||||
we mark one mount point as shared and another as private,
|
we mark one mount as shared and another as private,
|
||||||
and then view the mounts in
|
and then view the mounts in
|
||||||
.IR /proc/self/mountinfo :
|
.IR /proc/self/mountinfo :
|
||||||
.PP
|
.PP
|
||||||
|
@ -332,7 +255,7 @@ is a shared mount in peer group 1, and that
|
||||||
has no optional tags, indicating that it is a private mount.
|
has no optional tags, indicating that it is a private mount.
|
||||||
The first two fields in each record in this file are the unique
|
The first two fields in each record in this file are the unique
|
||||||
ID for this mount, and the mount ID of the parent mount.
|
ID for this mount, and the mount ID of the parent mount.
|
||||||
We can further inspect this file to see that the parent mount point of
|
We can further inspect this file to see that the parent mount of
|
||||||
.IR /mntS
|
.IR /mntS
|
||||||
and
|
and
|
||||||
.IR /mntP
|
.IR /mntP
|
||||||
|
@ -361,8 +284,8 @@ sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
The new mount namespace received a copy of the initial mount namespace's
|
The new mount namespace received a copy of the initial mount namespace's
|
||||||
mount points.
|
mounts.
|
||||||
These new mount points maintain the same propagation types,
|
These new mounts maintain the same propagation types,
|
||||||
but have unique mount IDs.
|
but have unique mount IDs.
|
||||||
(The
|
(The
|
||||||
.IR \-\-propagation\ unchanged
|
.IR \-\-propagation\ unchanged
|
||||||
|
@ -399,10 +322,10 @@ was created as shared (inheriting this setting from its parent mount) and
|
||||||
was created as a private mount.
|
was created as a private mount.
|
||||||
.PP
|
.PP
|
||||||
Returning to the first terminal and inspecting the set-up,
|
Returning to the first terminal and inspecting the set-up,
|
||||||
we see that the new mount created under the shared mount point
|
we see that the new mount created under the shared mount
|
||||||
.IR /mntS
|
.IR /mntS
|
||||||
propagated to its peer mount (in the initial mount namespace),
|
propagated to its peer mount (in the initial mount namespace),
|
||||||
but the new mount created under the private mount point
|
but the new mount created under the private mount
|
||||||
.IR /mntP
|
.IR /mntP
|
||||||
did not propagate:
|
did not propagate:
|
||||||
.PP
|
.PP
|
||||||
|
@ -416,7 +339,7 @@ sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
|
||||||
.in
|
.in
|
||||||
.\"
|
.\"
|
||||||
.SS MS_SLAVE example
|
.SS MS_SLAVE example
|
||||||
Making a mount point a slave allows it to receive propagated
|
Making a mount a slave allows it to receive propagated
|
||||||
mount and unmount events from a master shared peer group,
|
mount and unmount events from a master shared peer group,
|
||||||
while preventing it from propagating events to that master.
|
while preventing it from propagating events to that master.
|
||||||
This is useful if we want to (say) receive a mount event when
|
This is useful if we want to (say) receive a mount event when
|
||||||
|
@ -426,7 +349,7 @@ but want to prevent mount and unmount events under the slave mount
|
||||||
from having side effects in other namespaces.
|
from having side effects in other namespaces.
|
||||||
.PP
|
.PP
|
||||||
We can demonstrate the effect of slaving by first marking
|
We can demonstrate the effect of slaving by first marking
|
||||||
two mount points as shared in the initial mount namespace:
|
two mounts as shared in the initial mount namespace:
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
.EX
|
.EX
|
||||||
|
@ -439,7 +362,7 @@ sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
On a second terminal,
|
On a second terminal,
|
||||||
we create a new mount namespace and inspect the mount points:
|
we create a new mount namespace and inspect the mounts:
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
.EX
|
.EX
|
||||||
|
@ -450,7 +373,7 @@ sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
|
||||||
.EE
|
.EE
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
In the new mount namespace, we then mark one of the mount points as a slave:
|
In the new mount namespace, we then mark one of the mounts as a slave:
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
.EX
|
.EX
|
||||||
|
@ -480,7 +403,7 @@ sh2# \fBmount /dev/sda5 /mntY/b\fP
|
||||||
.EE
|
.EE
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
When we inspect the state of the mount points in the new mount namespace,
|
When we inspect the state of the mounts in the new mount namespace,
|
||||||
we see that
|
we see that
|
||||||
.IR /mntX/a
|
.IR /mntX/a
|
||||||
was created as a new shared mount
|
was created as a new shared mount
|
||||||
|
@ -516,7 +439,7 @@ sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
|
||||||
.EE
|
.EE
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
Now we create a new mount point under
|
Now we create a new mount under
|
||||||
.IR /mntY
|
.IR /mntY
|
||||||
in the first shell:
|
in the first shell:
|
||||||
.PP
|
.PP
|
||||||
|
@ -532,9 +455,9 @@ sh1# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
|
||||||
.EE
|
.EE
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
When we examine the mount points in the second mount namespace,
|
When we examine the mounts in the second mount namespace,
|
||||||
we see that in this case the new mount has been propagated
|
we see that in this case the new mount has been propagated
|
||||||
to the slave mount point,
|
to the slave mount,
|
||||||
and that the new mount is itself a slave mount (to peer group 4):
|
and that the new mount is itself a slave mount (to peer group 4):
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
|
@ -550,11 +473,11 @@ sh2# \fBcat /proc/self/mountinfo | grep \(aq/mnt\(aq | sed \(aqs/ \- .*//\(aq\fP
|
||||||
.\"
|
.\"
|
||||||
.SS MS_UNBINDABLE example
|
.SS MS_UNBINDABLE example
|
||||||
One of the primary purposes of unbindable mounts is to avoid
|
One of the primary purposes of unbindable mounts is to avoid
|
||||||
the "mount point explosion" problem when repeatedly performing bind mounts
|
the "mount explosion" problem when repeatedly performing bind mounts
|
||||||
of a higher-level subtree at a lower-level mount point.
|
of a higher-level subtree at a lower-level mount.
|
||||||
The problem is illustrated by the following shell session.
|
The problem is illustrated by the following shell session.
|
||||||
.PP
|
.PP
|
||||||
Suppose we have a system with the following mount points:
|
Suppose we have a system with the following mounts:
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
.EX
|
.EX
|
||||||
|
@ -567,7 +490,7 @@ Suppose we have a system with the following mount points:
|
||||||
.PP
|
.PP
|
||||||
Suppose furthermore that we wish to recursively bind mount
|
Suppose furthermore that we wish to recursively bind mount
|
||||||
the root directory under several users' home directories.
|
the root directory under several users' home directories.
|
||||||
We do this for the first user, and inspect the mount points:
|
We do this for the first user, and inspect the mounts:
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
.EX
|
.EX
|
||||||
|
@ -682,8 +605,8 @@ Now we create unbindable recursive bind mounts for the other two users:
|
||||||
.EE
|
.EE
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
Upon examining the list of mount points,
|
Upon examining the list of mounts,
|
||||||
we see there has been no explosion of mount points,
|
we see there has been no explosion of mounts,
|
||||||
because the unbindable mounts were not replicated
|
because the unbindable mounts were not replicated
|
||||||
under each user's directory:
|
under each user's directory:
|
||||||
.PP
|
.PP
|
||||||
|
@ -709,7 +632,7 @@ under each user's directory:
|
||||||
The following table shows the effect that applying a new propagation type
|
The following table shows the effect that applying a new propagation type
|
||||||
(i.e.,
|
(i.e.,
|
||||||
.IR "mount \-\-make\-xxxx")
|
.IR "mount \-\-make\-xxxx")
|
||||||
has on the existing propagation type of a mount point.
|
has on the existing propagation type of a mount.
|
||||||
The rows correspond to existing propagation types,
|
The rows correspond to existing propagation types,
|
||||||
and the columns are the new propagation settings.
|
and the columns are the new propagation settings.
|
||||||
For reasons of space, "private" is abbreviated as "priv" and
|
For reasons of space, "private" is abbreviated as "priv" and
|
||||||
|
@ -744,9 +667,9 @@ mount \-\-bind A/a B/b
|
||||||
.PP
|
.PP
|
||||||
Here,
|
Here,
|
||||||
.I A
|
.I A
|
||||||
is the source mount point,
|
is the source mount,
|
||||||
.I B
|
.I B
|
||||||
is the destination mount point,
|
is the destination mount,
|
||||||
.I a
|
.I a
|
||||||
is a subdirectory path under the mount point
|
is a subdirectory path under the mount point
|
||||||
.IR A ,
|
.IR A ,
|
||||||
|
@ -756,7 +679,7 @@ is a subdirectory path under the mount point
|
||||||
.IR B .
|
.IR B .
|
||||||
The propagation type of the resulting mount,
|
The propagation type of the resulting mount,
|
||||||
.IR B/b ,
|
.IR B/b ,
|
||||||
depends on the propagation types of the mount points
|
depends on the propagation types of the mounts
|
||||||
.IR A
|
.IR A
|
||||||
and
|
and
|
||||||
.IR B ,
|
.IR B ,
|
||||||
|
@ -792,15 +715,15 @@ mount \-\-move A B/b
|
||||||
.PP
|
.PP
|
||||||
Here,
|
Here,
|
||||||
.I A
|
.I A
|
||||||
is the source mount point,
|
is the source mount,
|
||||||
.I B
|
.I B
|
||||||
is the destination mount point, and
|
is the destination mount, and
|
||||||
.I b
|
.I b
|
||||||
is a subdirectory path under the mount point
|
is a subdirectory path under the mount point
|
||||||
.IR B .
|
.IR B .
|
||||||
The propagation type of the resulting mount,
|
The propagation type of the resulting mount,
|
||||||
.IR B/b ,
|
.IR B/b ,
|
||||||
depends on the propagation types of the mount points
|
depends on the propagation types of the mounts
|
||||||
.IR A
|
.IR A
|
||||||
and
|
and
|
||||||
.IR B ,
|
.IR B ,
|
||||||
|
@ -824,7 +747,7 @@ For further details, see
|
||||||
in the kernel source tree.
|
in the kernel source tree.
|
||||||
.\"
|
.\"
|
||||||
.SS Mount semantics
|
.SS Mount semantics
|
||||||
Suppose that we use the following command to create a mount point:
|
Suppose that we use the following command to create a mount:
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
.EX
|
.EX
|
||||||
|
@ -834,7 +757,7 @@ mount device B/b
|
||||||
.PP
|
.PP
|
||||||
Here,
|
Here,
|
||||||
.I B
|
.I B
|
||||||
is the destination mount point, and
|
is the destination mount, and
|
||||||
.I b
|
.I b
|
||||||
is a subdirectory path under the mount point
|
is a subdirectory path under the mount point
|
||||||
.IR B .
|
.IR B .
|
||||||
|
@ -845,7 +768,7 @@ where the propagation type of the source mount
|
||||||
is considered always to be private.
|
is considered always to be private.
|
||||||
.\"
|
.\"
|
||||||
.SS Unmount semantics
|
.SS Unmount semantics
|
||||||
Suppose that we use the following command to tear down a mount point:
|
Suppose that we use the following command to tear down a mount:
|
||||||
.PP
|
.PP
|
||||||
.in +4n
|
.in +4n
|
||||||
.EX
|
.EX
|
||||||
|
@ -855,7 +778,7 @@ unmount A
|
||||||
.PP
|
.PP
|
||||||
Here,
|
Here,
|
||||||
.I A
|
.I A
|
||||||
is a mount point on
|
is a mount on
|
||||||
.IR B/b ,
|
.IR B/b ,
|
||||||
where
|
where
|
||||||
.I B
|
.I B
|
||||||
|
@ -948,7 +871,7 @@ onto
|
||||||
.EE
|
.EE
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
Initially, these two mount points are in the same peer group,
|
Initially, these two mounts are in the same peer group,
|
||||||
but we then make the
|
but we then make the
|
||||||
.IR /tmp/etc
|
.IR /tmp/etc
|
||||||
a slave of
|
a slave of
|
||||||
|
@ -973,7 +896,7 @@ Then we bind mount
|
||||||
.IR /tmp/etc
|
.IR /tmp/etc
|
||||||
onto
|
onto
|
||||||
.IR /mnt/tmp/etc .
|
.IR /mnt/tmp/etc .
|
||||||
Again, the two mount points are initially in the same peer group,
|
Again, the two mounts are initially in the same peer group,
|
||||||
but we then make
|
but we then make
|
||||||
.IR /mnt/tmp/etc
|
.IR /mnt/tmp/etc
|
||||||
a slave of
|
a slave of
|
||||||
|
@ -1042,9 +965,9 @@ Mount namespaces first appeared in Linux 2.4.19.
|
||||||
Namespaces are a Linux-specific feature.
|
Namespaces are a Linux-specific feature.
|
||||||
.\"
|
.\"
|
||||||
.SH NOTES
|
.SH NOTES
|
||||||
The propagation type assigned to a new mount point depends
|
The propagation type assigned to a new mount depends
|
||||||
on the propagation type of the parent mount.
|
on the propagation type of the parent mount.
|
||||||
If the mount point has a parent (i.e., it is a non-root mount
|
If the mount has a parent (i.e., it is a non-root mount
|
||||||
point) and the propagation type of the parent is
|
point) and the propagation type of the parent is
|
||||||
.BR MS_SHARED ,
|
.BR MS_SHARED ,
|
||||||
then the propagation type of the new mount is also
|
then the propagation type of the new mount is also
|
||||||
|
@ -1053,13 +976,13 @@ Otherwise, the propagation type of the new mount is
|
||||||
.BR MS_PRIVATE .
|
.BR MS_PRIVATE .
|
||||||
.PP
|
.PP
|
||||||
Notwithstanding the fact that the default propagation type
|
Notwithstanding the fact that the default propagation type
|
||||||
for new mount points is in many cases
|
for new mount is in many cases
|
||||||
.BR MS_PRIVATE ,
|
.BR MS_PRIVATE ,
|
||||||
.BR MS_SHARED
|
.BR MS_SHARED
|
||||||
is typically more useful.
|
is typically more useful.
|
||||||
For this reason,
|
For this reason,
|
||||||
.BR systemd (1)
|
.BR systemd (1)
|
||||||
automatically remounts all mount points as
|
automatically remounts all mounts as
|
||||||
.BR MS_SHARED
|
.BR MS_SHARED
|
||||||
on system startup.
|
on system startup.
|
||||||
Thus, on most modern systems, the default propagation type is in practice
|
Thus, on most modern systems, the default propagation type is in practice
|
||||||
|
@ -1068,14 +991,14 @@ Thus, on most modern systems, the default propagation type is in practice
|
||||||
Since, when one uses
|
Since, when one uses
|
||||||
.BR unshare (1)
|
.BR unshare (1)
|
||||||
to create a mount namespace,
|
to create a mount namespace,
|
||||||
the goal is commonly to provide full isolation of the mount points
|
the goal is commonly to provide full isolation of the mounts
|
||||||
in the new namespace,
|
in the new namespace,
|
||||||
.BR unshare (1)
|
.BR unshare (1)
|
||||||
(since
|
(since
|
||||||
.IR util\-linux
|
.IR util\-linux
|
||||||
version 2.27) in turn reverses the step performed by
|
version 2.27) in turn reverses the step performed by
|
||||||
.BR systemd (1),
|
.BR systemd (1),
|
||||||
by making all mount points private in the new namespace.
|
by making all mounts private in the new namespace.
|
||||||
That is,
|
That is,
|
||||||
.BR unshare (1)
|
.BR unshare (1)
|
||||||
performs the equivalent of the following in the new mount namespace:
|
performs the equivalent of the following in the new mount namespace:
|
||||||
|
@ -1099,7 +1022,7 @@ may desire to prevent propagation of mount events to other mount namespaces
|
||||||
(as is done by
|
(as is done by
|
||||||
.BR unshare (1)).
|
.BR unshare (1)).
|
||||||
This can be done by changing the propagation type of
|
This can be done by changing the propagation type of
|
||||||
mount points in the new namespace to either
|
mounts in the new namespace to either
|
||||||
.B MS_SLAVE
|
.B MS_SLAVE
|
||||||
or
|
or
|
||||||
.BR MS_PRIVATE ,
|
.BR MS_PRIVATE ,
|
||||||
|
@ -1117,6 +1040,291 @@ and creating bind mounts
|
||||||
.RB ( MS_BIND ),
|
.RB ( MS_BIND ),
|
||||||
see
|
see
|
||||||
.IR Documentation/filesystems/sharedsubtree.txt .
|
.IR Documentation/filesystems/sharedsubtree.txt .
|
||||||
|
.\"
|
||||||
|
.\" ============================================================
|
||||||
|
.\"
|
||||||
|
.SS Restrictions on mount namespaces
|
||||||
|
Note the following points with respect to mount namespaces:
|
||||||
|
.IP [1] 4
|
||||||
|
Each mount namespace has an owner user namespace.
|
||||||
|
As explained above, when a new mount namespace is created,
|
||||||
|
its mount list is initialized as a copy of the mount list
|
||||||
|
of another mount namespace.
|
||||||
|
If the new namespace and the namespace from which the mount list
|
||||||
|
was copied are owned by different user namespaces,
|
||||||
|
then the new mount namespace is considered
|
||||||
|
.IR "less privileged" .
|
||||||
|
.IP [2]
|
||||||
|
When creating a less privileged mount namespace,
|
||||||
|
shared mounts are reduced to slave mounts.
|
||||||
|
This ensures that mappings performed in less
|
||||||
|
privileged mount namespaces will not propagate to more privileged
|
||||||
|
mount namespaces.
|
||||||
|
.IP [3]
|
||||||
|
Mounts that come as a single unit from a more privileged mount namespace are
|
||||||
|
locked together and may not be separated in a less privileged mount
|
||||||
|
namespace.
|
||||||
|
(The
|
||||||
|
.BR unshare (2)
|
||||||
|
.B CLONE_NEWNS
|
||||||
|
operation brings across all of the mounts from the original
|
||||||
|
mount namespace as a single unit,
|
||||||
|
and recursive mounts that propagate between
|
||||||
|
mount namespaces propagate as a single unit.)
|
||||||
|
.IP
|
||||||
|
In this context, "may not be separated" means that the mounts
|
||||||
|
are locked so that they may not be individually unmounted.
|
||||||
|
Consider the following example:
|
||||||
|
.IP
|
||||||
|
.RS
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
$ \fBsudo sh\fP
|
||||||
|
# \fBmount \-\-bind /dev/null /etc/shadow\fP
|
||||||
|
# \fBcat /etc/shadow\fP # Produces no output
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.RE
|
||||||
|
.IP
|
||||||
|
The above steps, performed in a more privileged mount namespace,
|
||||||
|
have created a bind mount that
|
||||||
|
obscures the contents of the shadow password file,
|
||||||
|
.IR /etc/shadow .
|
||||||
|
For security reasons, it should not be possible to unmount
|
||||||
|
that mount in a less privileged mount namespace,
|
||||||
|
since that would reveal the contents of
|
||||||
|
.IR /etc/shadow .
|
||||||
|
.IP
|
||||||
|
Suppose we now create a new mount namespace
|
||||||
|
owned by a new user namespace.
|
||||||
|
The new mount namespace will inherit copies of all of the mounts
|
||||||
|
from the previous mount namespace.
|
||||||
|
However, those mounts will be locked because the new mount namespace
|
||||||
|
is less privileged.
|
||||||
|
Consequently, an attempt to unmount the mount fails as show
|
||||||
|
in the following step:
|
||||||
|
.IP
|
||||||
|
.RS
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
# \fBunshare \-\-user \-\-map\-root\-user \-\-mount \e\fP
|
||||||
|
\fBstrace \-o /tmp/log \e\fP
|
||||||
|
\fBumount /mnt/dir\fP
|
||||||
|
umount: /etc/shadow: not mounted.
|
||||||
|
# \fBgrep \(aq^umount\(aq /tmp/log\fP
|
||||||
|
umount2("/etc/shadow", 0) = \-1 EINVAL (Invalid argument)
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.RE
|
||||||
|
.IP
|
||||||
|
The error message from
|
||||||
|
.BR mount (8)
|
||||||
|
is a little confusing, but the
|
||||||
|
.BR strace (1)
|
||||||
|
output reveals that the underlying
|
||||||
|
.BR umount2 (2)
|
||||||
|
system call failed with the error
|
||||||
|
.BR EINVAL ,
|
||||||
|
which is the error that the kernel returns to indicate that
|
||||||
|
the mount is locked.
|
||||||
|
.IP
|
||||||
|
Note, however, that it is possible to stack (and unstack) a
|
||||||
|
mount on top of one of the inherited locked mounts in a
|
||||||
|
less privileged mount namespace:
|
||||||
|
.IP
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
# \fBecho \(aqaaaaa\(aq > /tmp/a\fP # File to mount onto /etc/shadow
|
||||||
|
# \fBunshare \-\-user \-\-map\-root\-user \-\-mount \e\fP
|
||||||
|
\fBsh \-c \(aqmount \-\-bind /tmp/a /etc/shadow; cat /etc/shadow\(aq\fP
|
||||||
|
aaaaa
|
||||||
|
# \fBumount /etc/shadow\fP
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.IP
|
||||||
|
The final
|
||||||
|
.BR umount (8)
|
||||||
|
command above, which is performed in the initial mount namespace,
|
||||||
|
makes the original
|
||||||
|
.I /etc/shadow
|
||||||
|
file once more visible in that namespace.
|
||||||
|
.IP [4]
|
||||||
|
Following on from point [3],
|
||||||
|
note that it is possible to unmount an entire subtree of mounts that
|
||||||
|
propagated as a unit into a less privileged mount namespace,
|
||||||
|
as illustrated in the following example.
|
||||||
|
.IP
|
||||||
|
First, we create new user and mount namespaces using
|
||||||
|
.BR unshare (1).
|
||||||
|
In the new mount namespace,
|
||||||
|
the propagation type of all mounts is set to private.
|
||||||
|
We then create a shared bind mount at
|
||||||
|
.IR /mnt ,
|
||||||
|
and a small hierarchy of mounts underneath that mount.
|
||||||
|
.IP
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
$ \fBPS1=\(aqns1# \(aq sudo unshare \-\-user \-\-map\-root\-user \e\fP
|
||||||
|
\fB\-\-mount \-\-propagation private bash\fP
|
||||||
|
ns1# \fBecho $$\fP # We need the PID of this shell later
|
||||||
|
778501
|
||||||
|
ns1# \fBmount \-\-make\-shared \-\-bind /mnt /mnt\fP
|
||||||
|
ns1# \fBmkdir /mnt/x\fP
|
||||||
|
ns1# \fBmount \-\-make\-private \-t tmpfs none /mnt/x\fP
|
||||||
|
ns1# \fBmkdir /mnt/x/y\fP
|
||||||
|
ns1# \fBmount \-\-make\-private \-t tmpfs none /mnt/x/y\fP
|
||||||
|
ns1# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
|
||||||
|
986 83 8:5 /mnt /mnt rw,relatime shared:344
|
||||||
|
989 986 0:56 / /mnt/x rw,relatime
|
||||||
|
990 989 0:57 / /mnt/x/y rw,relatime
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.IP
|
||||||
|
Continuing in the same shell session,
|
||||||
|
we then create a second shell in a new user namespace and a new
|
||||||
|
(less privileged) mount namespace and
|
||||||
|
check the state of the propagated mounts rooted at
|
||||||
|
.IR /mnt .
|
||||||
|
.IP
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
ns1# \fBPS1=\(aqns2# \(aq unshare \-\-user \-\-map\-root\-user \e\fP
|
||||||
|
\fB\-\-mount \-\-propagation unchanged bash\fP
|
||||||
|
ns2# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
|
||||||
|
1239 1204 8:5 /mnt /mnt rw,relatime master:344
|
||||||
|
1240 1239 0:56 / /mnt/x rw,relatime
|
||||||
|
1241 1240 0:57 / /mnt/x/y rw,relatime
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.IP
|
||||||
|
Of note in the above output is that the propagation type of the mount
|
||||||
|
.I /mnt
|
||||||
|
has been reduced to slave, as explained in point [2].
|
||||||
|
This means that submount events will propagate from the master
|
||||||
|
.I /mnt
|
||||||
|
in "ns1", but propagation will not occur in the opposite direction.
|
||||||
|
.IP
|
||||||
|
From a separate terminal window, we then use
|
||||||
|
.BR nsenter (1)
|
||||||
|
to enter the mount and user namespaces corresponding to "ns1".
|
||||||
|
In that terminal window, we then recursively bind mount
|
||||||
|
.IR /mnt/x
|
||||||
|
at the location
|
||||||
|
.IR /mnt/ppp .
|
||||||
|
.IP
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
$ \fBPS1=\(aqns3# \(aq sudo nsenter \-t 778501 \-\-user \-\-mount\fP
|
||||||
|
ns3# \fBmount \-\-rbind \-\-make\-private /mnt/x /mnt/ppp\fP
|
||||||
|
ns3# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
|
||||||
|
986 83 8:5 /mnt /mnt rw,relatime shared:344
|
||||||
|
989 986 0:56 / /mnt/x rw,relatime
|
||||||
|
990 989 0:57 / /mnt/x/y rw,relatime
|
||||||
|
1242 986 0:56 / /mnt/ppp rw,relatime
|
||||||
|
1243 1242 0:57 / /mnt/ppp/y rw,relatime shared:518
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.IP
|
||||||
|
Because the propagation type of the parent mount,
|
||||||
|
.IR /mnt ,
|
||||||
|
was shared, the recursive bind mount propagated a small subtree of
|
||||||
|
mounts under the slave mount
|
||||||
|
.I /mnt
|
||||||
|
into "ns2",
|
||||||
|
as can be verified by executing the following command in that shell session:
|
||||||
|
.IP
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
ns2# \fBgrep /mnt /proc/self/mountinfo | sed \(aqs/ \- .*//\(aq\fP
|
||||||
|
1239 1204 8:5 /mnt /mnt rw,relatime master:344
|
||||||
|
1240 1239 0:56 / /mnt/x rw,relatime
|
||||||
|
1241 1240 0:57 / /mnt/x/y rw,relatime
|
||||||
|
1244 1239 0:56 / /mnt/ppp rw,relatime
|
||||||
|
1245 1244 0:57 / /mnt/ppp/y rw,relatime master:518
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.IP
|
||||||
|
While it is not possible to unmount a part of the propagated subtree
|
||||||
|
.RI ( /mnt/ppp/y )
|
||||||
|
in "ns2",
|
||||||
|
it is possible to unmount the entire subtree,
|
||||||
|
as shown by the following commands:
|
||||||
|
.IP
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
ns2# \fBumount /mnt/ppp/y\fP
|
||||||
|
umount: /mnt/ppp/y: not mounted.
|
||||||
|
ns2# \fBumount \-l /mnt/ppp | sed \(aqs/ \- .*//\(aq\fP # Succeeds...
|
||||||
|
ns2# \fBgrep /mnt /proc/self/mountinfo\fP
|
||||||
|
1239 1204 8:5 /mnt /mnt rw,relatime master:344
|
||||||
|
1240 1239 0:56 / /mnt/x rw,relatime
|
||||||
|
1241 1240 0:57 / /mnt/x/y rw,relatime
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.IP [5]
|
||||||
|
The
|
||||||
|
.BR mount (2)
|
||||||
|
flags
|
||||||
|
.BR MS_RDONLY ,
|
||||||
|
.BR MS_NOSUID ,
|
||||||
|
.BR MS_NOEXEC ,
|
||||||
|
and the "atime" flags
|
||||||
|
.RB ( MS_NOATIME ,
|
||||||
|
.BR MS_NODIRATIME ,
|
||||||
|
.BR MS_RELATIME )
|
||||||
|
settings become locked
|
||||||
|
.\" commit 9566d6742852c527bf5af38af5cbb878dad75705
|
||||||
|
.\" Author: Eric W. Biederman <ebiederm@xmission.com>
|
||||||
|
.\" Date: Mon Jul 28 17:26:07 2014 -0700
|
||||||
|
.\"
|
||||||
|
.\" mnt: Correct permission checks in do_remount
|
||||||
|
.\"
|
||||||
|
when propagated from a more privileged to
|
||||||
|
a less privileged mount namespace,
|
||||||
|
and may not be changed in the less privileged mount namespace.
|
||||||
|
.IP
|
||||||
|
This point is illustrated in the following example where,
|
||||||
|
in a more privileged mount namespace,
|
||||||
|
we create a bind mount that is marked as read-only.
|
||||||
|
For security reasons,
|
||||||
|
it should not be possible to make the mount writable in
|
||||||
|
a less privileged mount namespace, and indeed the kernel prevents this:
|
||||||
|
.IP
|
||||||
|
.RS
|
||||||
|
.in +4n
|
||||||
|
.EX
|
||||||
|
$ \fBsudo mkdir /mnt/dir\fP
|
||||||
|
$ \fBsudo mount \-\-bind \-o ro /some/path /mnt/dir\fP
|
||||||
|
$ \fBsudo unshare \-\-user \-\-map\-root\-user \-\-mount \e\fP
|
||||||
|
\fBmount \-o remount,rw /mnt/dir\fP
|
||||||
|
mount: /mnt/dir: permission denied.
|
||||||
|
.EE
|
||||||
|
.in
|
||||||
|
.RE
|
||||||
|
.IP [6]
|
||||||
|
.\" (As of 3.18-rc1 (in Al Viro's 2014-08-30 vfs.git#for-next tree))
|
||||||
|
A file or directory that is a mount point in one namespace that is not
|
||||||
|
a mount point in another namespace, may be renamed, unlinked, or removed
|
||||||
|
.RB ( rmdir (2))
|
||||||
|
in the mount namespace in which it is not a mount point
|
||||||
|
(subject to the usual permission checks).
|
||||||
|
Consequently, the mount point is removed in the mount namespace
|
||||||
|
where it was a mount point.
|
||||||
|
.IP
|
||||||
|
Previously (before Linux 3.18),
|
||||||
|
.\" mtk: The change was in Linux 3.18, I think, with this commit:
|
||||||
|
.\" commit 8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe
|
||||||
|
.\" Author: Eric W. Biederman <ebiederman@twitter.com>
|
||||||
|
.\" Date: Tue Oct 1 18:33:48 2013 -0700
|
||||||
|
.\"
|
||||||
|
.\" vfs: Lazily remove mounts on unlinked files and directories.
|
||||||
|
attempting to unlink, rename, or remove a file or directory
|
||||||
|
that was a mount point in another mount namespace would result in the error
|
||||||
|
.BR EBUSY .
|
||||||
|
That behavior had technical problems of enforcement (e.g., for NFS)
|
||||||
|
and permitted denial-of-service attacks against more privileged users
|
||||||
|
(i.e., preventing individual files from being updated
|
||||||
|
by bind mounting on top of them).
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
See
|
See
|
||||||
.BR pivot_root (2).
|
.BR pivot_root (2).
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.\"
|
.\"
|
||||||
.TH NAMESPACES 7 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH NAMESPACES 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
namespaces \- overview of Linux namespaces
|
namespaces \- overview of Linux namespaces
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH PATH_RESOLUTION 7 2020-04-11 "Linux" "Linux Programmer's Manual"
|
.TH PATH_RESOLUTION 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
path_resolution \- how a pathname is resolved to a file
|
path_resolution \- how a pathname is resolved to a file
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
.\" the source, must acknowledge the copyright and authors of this work.
|
.\" the source, must acknowledge the copyright and authors of this work.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH PIPE 7 2017-09-15 "Linux" "Linux Programmer's Manual"
|
.TH PIPE 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pipe \- overview of pipes and FIFOs
|
pipe \- overview of pipes and FIFOs
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
.\" <http://www.gnu.org/licenses/>.
|
.\" <http://www.gnu.org/licenses/>.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH POSIXOPTIONS 7 2018-04-30 "" "Linux Programmer's Manual"
|
.TH POSIXOPTIONS 7 2021-08-27 "" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
posixoptions \- optional parts of the POSIX standard
|
posixoptions \- optional parts of the POSIX standard
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.\"
|
.\"
|
||||||
.TH USER_NAMESPACES 7 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH USER_NAMESPACES 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
user_namespaces \- overview of Linux user namespaces
|
user_namespaces \- overview of Linux user namespaces
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
.\" http://www.linuxjournal.com/content/creating-vdso-colonels-other-chicken
|
.\" http://www.linuxjournal.com/content/creating-vdso-colonels-other-chicken
|
||||||
.\" http://www.trilithium.com/johan/2005/08/linux-gate/
|
.\" http://www.trilithium.com/johan/2005/08/linux-gate/
|
||||||
.\"
|
.\"
|
||||||
.TH VDSO 7 2021-03-22 "Linux" "Linux Programmer's Manual"
|
.TH VDSO 7 2021-08-27 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
vdso \- overview of the virtual ELF dynamic shared object
|
vdso \- overview of the virtual ELF dynamic shared object
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
.\" <http://www.gnu.org/licenses/>.
|
.\" <http://www.gnu.org/licenses/>.
|
||||||
.\" %%%LICENSE_END
|
.\" %%%LICENSE_END
|
||||||
.\"
|
.\"
|
||||||
.TH ICONVCONFIG 8 2021-03-22 "GNU" "Linux System Administration"
|
.TH ICONVCONFIG 8 2021-08-27 "GNU" "Linux System Administration"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
iconvconfig \- create iconv module configuration cache
|
iconvconfig \- create iconv module configuration cache
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -96,6 +96,10 @@ Usual system default gconv module configuration file.
|
||||||
.TP
|
.TP
|
||||||
.I /usr/lib/gconv/gconv\-modules.cache
|
.I /usr/lib/gconv/gconv\-modules.cache
|
||||||
Usual system gconv module configuration cache.
|
Usual system gconv module configuration cache.
|
||||||
|
.PP
|
||||||
|
Depending on the architecture,
|
||||||
|
the above files may instead be located at directories with the path prefix
|
||||||
|
.IR /usr/lib64 .
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR iconv (1),
|
.BR iconv (1),
|
||||||
.BR iconv (3)
|
.BR iconv (3)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.\" Various parts:
|
.\" Various parts:
|
||||||
.\" Copyright (C) 2007-9, 2013, 2016 Michael Kerrisk <mtk.manpages@gmail.com>
|
.\" Copyright (C) 2007-9, 2013, 2016 Michael Kerrisk <mtk.manpages@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
.TH LD.SO 8 2021-03-22 "GNU" "Linux Programmer's Manual"
|
.TH LD.SO 8 2021-08-27 "GNU" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
ld.so, ld\-linux.so \- dynamic linker/loader
|
ld.so, ld\-linux.so \- dynamic linker/loader
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
Loading…
Reference in New Issue