]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/chown.2
man*/: srcfix (Use .P instead of .PP or .LP)
[thirdparty/man-pages.git] / man2 / chown.2
index 354193c2837bebe929c6f45b861023a86a9e705e..ffba3acafac098f6c8665d205998205ca4607511 100644 (file)
@@ -2,27 +2,7 @@
 .\" and Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl)
 .\" and Copyright (c) 2006, 2007, 2008, 2014 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
-.\" %%%LICENSE_START(VERBATIM)
-.\" Permission is granted to make and distribute verbatim copies of this
-.\" manual provided the copyright notice and this permission notice are
-.\" preserved on all copies.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\" %%%LICENSE_END
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
 .\"
 .\" Modified by Michael Haardt <michael@moria.de>
 .\" Modified 1993-07-21 by Rik Faith <faith@cs.unc.edu>
 .\"     (bsdgroups versus sysvgroups, and the effect of the parent
 .\"     directory's set-group-ID mode bit).
 .\"
-.TH CHOWN 2 2021-03-22 "Linux" "Linux Programmer's Manual"
+.TH chown 2 (date) "Linux man-pages (unreleased)"
 .SH NAME
 chown, fchown, lchown, fchownat \- change ownership of a file
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
 .SH SYNOPSIS
 .nf
 .B #include <unistd.h>
-.PP
+.P
 .BI "int chown(const char *" pathname ", uid_t " owner ", gid_t " group );
 .BI "int fchown(int " fd ", uid_t " owner ", gid_t " group );
 .BI "int lchown(const char *" pathname ", uid_t " owner ", gid_t " group );
-.PP
+.P
 .BR "#include <fcntl.h>           " "/* Definition of AT_* constants */"
 .B #include <unistd.h>
-.PP
+.P
 .BI "int fchownat(int " dirfd ", const char *" pathname ,
 .BI "             uid_t " owner ", gid_t " group ", int " flags );
 .fi
-.PP
+.P
 .RS -4
 Feature Test Macro Requirements for glibc (see
 .BR feature_test_macros (7)):
 .RE
-.PP
+.P
 .BR fchown (),
 .BR lchown ():
 .nf
     /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
         || _XOPEN_SOURCE >= 500
 .\"    || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
-        || /* Glibc <= 2.19: */ _BSD_SOURCE
+        || /* glibc <= 2.19: */ _BSD_SOURCE
 .fi
-.PP
+.P
 .BR fchownat ():
 .nf
     Since glibc 2.10:
@@ -82,21 +65,21 @@ The
 and
 .BR lchown ()
 system calls differ only in how the file is specified:
-.IP * 2
+.IP \[bu] 3
 .BR chown ()
 changes the ownership of the file specified by
 .IR pathname ,
 which is dereferenced if it is a symbolic link.
-.IP *
+.IP \[bu]
 .BR fchown ()
 changes the ownership of the file referred to by the open file descriptor
 .IR fd .
-.IP *
+.IP \[bu]
 .BR lchown ()
 is like
 .BR chown (),
 but does not dereference symbolic links.
-.PP
+.P
 Only a privileged process (Linux: one with the
 .B CAP_CHOWN
 capability) may change the owner of a file.
@@ -105,13 +88,13 @@ to any group of which that owner is a member.
 A privileged process (Linux: with
 .BR CAP_CHOWN )
 may change the group arbitrarily.
-.PP
+.P
 If the
 .I owner
 or
 .I group
 is specified as \-1, then that ID is not changed.
-.PP
+.P
 When the owner or group of an executable file is
 changed by an unprivileged user, the
 .B S_ISUID
@@ -124,15 +107,15 @@ this also should happen when root does the
 the Linux behavior depends on the kernel version,
 and since Linux 2.2.13, root is treated like other users.
 .\" In Linux 2.0 kernels, superuser was like everyone else
-.\" In 2.2, up to 2.2.12, these bits were not cleared for superuser.
-.\" Since 2.2.13, superuser is once more like everyone else.
+.\" In Linux 2.2, up to Linux 2.2.12, these bits were not cleared for superuser.
+.\" Since Linux 2.2.13, superuser is once more like everyone else.
 In case of a non-group-executable file (i.e., one for which the
 .B S_IXGRP
 bit is not set) the
 .B S_ISGID
 bit indicates mandatory locking, and is not cleared by a
 .BR chown ().
-.PP
+.P
 When the owner or group of an executable file is changed (by any user),
 all capability sets for the file are cleared.
 .\"
@@ -142,7 +125,7 @@ The
 system call operates in exactly the same way as
 .BR chown (),
 except for the differences described here.
-.PP
+.P
 If the pathname given in
 .I pathname
 is relative, then it is interpreted relative to the directory
@@ -152,7 +135,7 @@ referred to by the file descriptor
 the calling process, as is done by
 .BR chown ()
 for a relative pathname).
-.PP
+.P
 If
 .I pathname
 is relative and
@@ -164,13 +147,13 @@ then
 is interpreted relative to the current working
 directory of the calling process (like
 .BR chown ()).
-.PP
+.P
 If
 .I pathname
 is absolute, then
 .I dirfd
 is ignored.
-.PP
+.P
 The
 .I flags
 argument is a bit mask created by ORing together
@@ -181,7 +164,7 @@ argument is a bit mask created by ORing together
 If
 .I pathname
 is an empty string, operate on the file referred to by
-.IR dirfd
+.I dirfd
 (which may have been obtained using the
 .BR open (2)
 .B O_PATH
@@ -209,7 +192,7 @@ instead operate on the link itself, like
 .BR fchownat ()
 dereferences symbolic links, like
 .BR chown ().)
-.PP
+.P
 See
 .BR openat (2)
 for an explanation of the need for
@@ -222,7 +205,7 @@ is set to indicate the error.
 .SH ERRORS
 Depending on the filesystem,
 errors other than those listed below can be returned.
-.PP
+.P
 The more general errors for
 .BR chown ()
 are listed below.
@@ -232,10 +215,33 @@ Search permission is denied on a component of the path prefix.
 (See also
 .BR path_resolution (7).)
 .TP
+.B EBADF
+.RB ( fchown ())
+.I fd
+is not a valid open file descriptor.
+.TP
+.B EBADF
+.RB ( fchownat ())
+.I pathname
+is relative but
+.I dirfd
+is neither
+.B AT_FDCWD
+nor a valid file descriptor.
+.TP
 .B EFAULT
 .I pathname
 points outside your accessible address space.
 .TP
+.B EINVAL
+.RB ( fchownat ())
+Invalid flag specified in
+.IR flags .
+.TP
+.B EIO
+.RB ( fchown ())
+A low-level I/O error occurred while modifying the inode.
+.TP
 .B ELOOP
 Too many symbolic links were encountered in resolving
 .IR pathname .
@@ -253,6 +259,13 @@ Insufficient kernel memory was available.
 .B ENOTDIR
 A component of the path prefix is not a directory.
 .TP
+.B ENOTDIR
+.RB ( fchownat ())
+.I pathname
+is relative and
+.I dirfd
+is a file descriptor referring to a file other than a directory.
+.TP
 .B EPERM
 The calling process did not have the required permissions
 (see above) to change owner and/or group.
@@ -264,61 +277,7 @@ The file is marked immutable or append-only.
 .TP
 .B EROFS
 The named file resides on a read-only filesystem.
-.PP
-The general errors for
-.BR fchown ()
-are listed below:
-.TP
-.B EBADF
-.I fd
-is not a valid open file descriptor.
-.TP
-.B EIO
-A low-level I/O error occurred while modifying the inode.
-.TP
-.B ENOENT
-See above.
-.TP
-.B EPERM
-See above.
-.TP
-.B EROFS
-See above.
-.PP
-The same errors that occur for
-.BR chown ()
-can also occur for
-.BR fchownat ().
-The following additional errors can occur for
-.BR fchownat ():
-.TP
-.B EBADF
-.I pathname
-is relative but
-.I dirfd
-is neither
-.B AT_FDCWD
-nor a valid file descriptor.
-.TP
-.B EINVAL
-Invalid flag specified in
-.IR flags .
-.TP
-.B ENOTDIR
-.I pathname
-is relative and
-.I dirfd
-is a file descriptor referring to a file other than a directory.
 .SH VERSIONS
-.BR fchownat ()
-was added to Linux in kernel 2.6.16;
-library support was added to glibc in version 2.4.
-.SH CONFORMING TO
-.BR chown (),
-.BR fchown (),
-.BR lchown ():
-4.4BSD, SVr4, POSIX.1-2001, POSIX.1-2008.
-.PP
 The 4.4BSD version can be
 used only by the superuser (that is, ordinary users cannot give away files).
 .\" chown():
@@ -327,9 +286,21 @@ used only by the superuser (that is, ordinary users cannot give away files).
 .\" fchown():
 .\" SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK
 .\" error conditions.
-.PP
-.BR fchownat ():
+.SH STANDARDS
 POSIX.1-2008.
+.SH HISTORY
+.TP
+.BR chown ()
+.TQ
+.BR fchown ()
+.TQ
+.BR lchown ()
+4.4BSD, SVr4, POSIX.1-2001.
+.TP
+.BR fchownat ()
+POSIX.1-2008.
+Linux 2.6.16,
+glibc 2.4.
 .SH NOTES
 .SS Ownership of new files
 When a new file is created (by, for example,
@@ -353,34 +324,34 @@ and
 .BR "\-o\ sysvgroups" )
 .BR mount (8)
 options, then the rules are as follows:
-.IP * 2
+.IP \[bu] 3
 If the filesystem is mounted with
 .BR "\-o\ grpid" ,
 then the group of a new file is made
 the same as that of the parent directory.
-.IP *
+.IP \[bu]
 If the filesystem is mounted with
-.BR "\-o\ nogrpid"
+.B \-o\ nogrpid
 and the set-group-ID bit is disabled on the parent directory,
 then the group of a new file is made the same as the
 process's filesystem GID.
-.IP *
+.IP \[bu]
 If the filesystem is mounted with
-.BR "\-o\ nogrpid"
+.B \-o\ nogrpid
 and the set-group-ID bit is enabled on the parent directory,
 then the group of a new file is made
 the same as that of the parent directory.
-.PP
+.P
 As at Linux 4.12,
 the
-.BR "\-o\ grpid"
+.B \-o\ grpid
 and
-.BR "\-o\ nogrpid"
+.B \-o\ nogrpid
 mount options are supported by ext2, ext3, ext4, and XFS.
 Filesystems that don't support these mount options follow the
-.BR "\-o\ nogrpid"
+.B \-o\ nogrpid
 rules.
-.SS Glibc notes
+.SS glibc notes
 On older kernels where
 .BR fchownat ()
 is unavailable, the glibc wrapper function falls back to the use of
@@ -391,9 +362,9 @@ When
 .I pathname
 is a relative pathname,
 glibc constructs a pathname based on the symbolic link in
-.IR /proc/self/fd
+.I /proc/self/fd
 that corresponds to the
-.IR dirfd
+.I dirfd
 argument.
 .SS NFS
 The
@@ -427,8 +398,8 @@ The glibc
 and
 .BR lchown ()
 wrapper functions transparently deal with the variations across kernel versions.
-.PP
-In versions of Linux prior to 2.1.81 (and distinct from 2.1.46),
+.P
+Before Linux 2.1.81 (except 2.1.46),
 .BR chown ()
 did not follow symbolic links.
 Since Linux 2.1.81,
@@ -451,44 +422,46 @@ or as a username (which is converted to a user ID by using
 .BR getpwnam (3)
 to perform a lookup in the system password file).
 .SS Program source
+.\" SRC BEGIN (chown.c)
 .EX
 #include <pwd.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-
+\&
 int
 main(int argc, char *argv[])
 {
-    uid_t uid;
-    struct passwd *pwd;
-    char *endptr;
-
-    if (argc != 3 || argv[1][0] == \(aq\e0\(aq) {
+    char           *endptr;
+    uid_t          uid;
+    struct passwd  *pwd;
+\&
+    if (argc != 3 || argv[1][0] == \[aq]\e0\[aq]) {
         fprintf(stderr, "%s <owner> <file>\en", argv[0]);
         exit(EXIT_FAILURE);
     }
-
+\&
     uid = strtol(argv[1], &endptr, 10);  /* Allow a numeric string */
-
-    if (*endptr != \(aq\e0\(aq) {         /* Was not pure numeric string */
+\&
+    if (*endptr != \[aq]\e0\[aq]) {         /* Was not pure numeric string */
         pwd = getpwnam(argv[1]);   /* Try getting UID for username */
         if (pwd == NULL) {
             perror("getpwnam");
             exit(EXIT_FAILURE);
         }
-
+\&
         uid = pwd\->pw_uid;
     }
-
+\&
     if (chown(argv[2], uid, \-1) == \-1) {
         perror("chown");
         exit(EXIT_FAILURE);
     }
-
+\&
     exit(EXIT_SUCCESS);
 }
 .EE
+.\" SRC END
 .SH SEE ALSO
 .BR chgrp (1),
 .BR chown (1),