diff options
Diffstat (limited to 'man2/chown.2')
-rw-r--r-- | man2/chown.2 | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/man2/chown.2 b/man2/chown.2 new file mode 100644 index 000000000..ef0f2fcf5 --- /dev/null +++ b/man2/chown.2 @@ -0,0 +1,185 @@ +.\" Hey Emacs! This file is -*- nroff -*- source. +.\" +.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 +.\" Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl) +.\" +.\" Permission is granted to make and distribute verbatim copies of this +.\" manual provided the copyright notice and this permission notice are +.\" preserved on all copies. +.\" +.\" Permission is granted to copy and distribute modified versions of this +.\" manual under the conditions for verbatim copying, provided that the +.\" entire resulting derived work is distributed under the terms of a +.\" permission notice identical to this one. +.\" +.\" Since the Linux kernel and libraries are constantly changing, this +.\" manual page may be incorrect or out-of-date. The author(s) assume no +.\" responsibility for errors or omissions, or for damages resulting from +.\" the use of the information contained herein. The author(s) may not +.\" have taken the same level of care in the production of this manual, +.\" which is licensed free of charge, as they might when working +.\" professionally. +.\" +.\" Formatted or processed versions of this manual, if unaccompanied by +.\" the source, must acknowledge the copyright and authors of this work. +.\" +.\" Modified by Michael Haardt <michael@moria.de> +.\" Modified 1993-07-21 by Rik Faith <faith@cs.unc.edu> +.\" Modified 1996-07-09 by Andries Brouwer <aeb@cwi.nl> +.\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com> +.\" Modified 1997-05-18 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de> +.\" Modified 2004-06-23 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz> +.\" +.TH CHOWN 2 2004-06-23 "Linux 2.6.7" "Linux Programmer's Manual" +.SH NAME +chown, fchown, lchown \- change ownership of a file +.SH SYNOPSIS +.B #include <sys/types.h> +.br +.B #include <unistd.h> +.sp +.BI "int chown(const char *" path ", uid_t " owner ", gid_t " group ); +.br +.BI "int fchown(int " fd ", uid_t " owner ", gid_t " group ); +.br +.BI "int lchown(const char *" path ", uid_t " owner ", gid_t " group ); +.SH DESCRIPTION +These system calls change the owner and group of the file specified by +.I path +or by +.IR fd . +Only a privileged process (Linux: one with the +.B CAP_CHOWN +capability) may change the owner of a file. +The owner of a file may change the group of the file +to any group of which that owner is a member. +A privileged process (Linux: with +.BR CAP_CHOWN ) +may change the group arbitrarily. + +If the +.I owner +or +.I group +is specified as \-1, then that ID is not changed. + +When the owner or group of an executable file are changed by a non-super-user, +the S_ISUID and S_ISGID mode bits are cleared. POSIX does not specify whether +this also should happen when root does the +.IR chown ; +the Linux behaviour depends on the kernel version. +.\" 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 case of a non-group-executable file (with clear S_IXGRP bit) +the S_ISGID bit indicates mandatory locking, and is not cleared +by a +.IR chown . + +.SH "RETURN VALUE" +On success, zero is returned. On error, \-1 is returned, and +.I errno +is set appropriately. +.SH ERRORS +Depending on the file system, other errors can be returned. The more +general errors for +.B chown +are listed below. +.TP +.B EACCES +Search permission is denied on a component of the path prefix. +(See also +.BR path_resolution (2).) +.TP +.B EFAULT +.I path +points outside your accessible address space. +.TP +.B ELOOP +Too many symbolic links were encountered in resolving +.IR path . +.TP +.B ENAMETOOLONG +.I path +is too long. +.TP +.B ENOENT +The file does not exist. +.TP +.B ENOMEM +Insufficient kernel memory was available. +.TP +.B ENOTDIR +A component of the path prefix is not a directory. +.TP +.B EPERM +The calling process did not have the required permissions +(see above) to change owner and/or group. +.TP +.B EROFS +The named file resides on a read-only file system. +.PP +The general errors for +.B fchown +are listed below: +.TP +.B EBADF +The descriptor is not valid. +.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. +.SH NOTES +In versions of Linux prior to 2.1.81 (and distinct from 2.1.46), +.B chown +did not follow symbolic links. +Since Linux 2.1.81, +.B chown +does follow symbolic links, and there is a new system call +.B lchown +that does not follow symbolic links. +Since Linux 2.1.86, this new call (that has the same semantics +as the old +.BR chown ) +has got the same syscall number, and +.B chown +got the newly introduced number. +.LP +The prototype for +.B fchown +is only available if +.B _BSD_SOURCE +is defined (either explicitly, or implicitly, by not defining +_POSIX_SOURCE or compiling with the -ansi flag). +.SH "CONFORMING TO" +The +.B chown +call conforms to SVr4, SVID, POSIX, X/OPEN. The 4.4BSD version can only be +used by the superuser (that is, ordinary users cannot give away files). +SVr4 documents EINVAL, EINTR, ENOLINK and EMULTIHOP returns, but no +ENOMEM. POSIX.1 does not document ENOMEM or ELOOP error conditions. +.PP +The +.B fchown +call conforms to 4.4BSD and SVr4. +SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK error conditions. +.SH RESTRICTIONS +The \fBchown\fP() semantics are deliberately violated on NFS file systems +which have UID mapping enabled. Additionally, the semantics of all system +calls which access the file contents are violated, because \fBchown\fP() +may cause immediate access revocation on already open files. Client side +caching may lead to a delay between the time where ownership have +been changed to allow access for a user and the time where the file can +actually be accessed by the user on other clients. +.SH "SEE ALSO" +.BR chmod (2), +.BR flock (2), +.BR path_resolution (2) |