Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
chown(2)							      chown(2)

       chown, fchown - change owner and	group of a file

       #include	<sys/types.h>

       chown(path, owner, group)
       char *path;
       uid_t owner;
       gid_t group;

       fchown(fd, owner, group)
       int fd;
       uid_t owner;
       gid_t group;

       The  and	 system	 calls change the owner	and group of the file named by
       path or referenced by fd	.  Only	the superuser can change the owner  of
       a file.	Other users can	change the group-id of a file that they	own to
       another group to	which they belong.

       If you specify -1 in owner or  group,  the  corresponding  owner-id  or
       group-id	of the file is unchanged.

       The  system  call  clears  the set-user-id and set-group-id bits	on the
       file when it returns successfully, unless the call is made by the supe-
       ruser.  Clearing	these bits when	a file's owner is changed protects the
       file from remaining set-user-id or set-group-id after  being  modified.
       If a file, specifically a program, remained set-user-id or set-group-id
       after being modified, that file	could  allow  unauthorized  access  to
       other files or accounts.

       You should use the system call with the file locking primitives because
       preserves any locks you previously obtained with	the system call.   For
       more information	about file locking, see	the reference page.

Return Values
       The  and	 calls return zero if the operation is successful; if an error
       occurs they return -1 and store a  more	specific  error	 code  in  the
       global variable errno.

   System Five
       Differs	from  the  System  V definition	in that	only the superuser can
       change the ownership of a file.	In addition, ELOOP is a	possible error

       When your program is compiled in	the POSIX environment, the owner argu-
       ment is of type uid_t, and the group argument is	of type	gid_t.

       The system call fails and the file is  unchanged	 under	the  following

       [ENOTDIR]      A	component of the path prefix is	not a directory.

       [ENAMETOOLONG] A	component of a pathname	exceeded 255 characters, or an
		      entire pathname exceeded 1023 characters.

       [ENOENT]	      The named	file does not exist.

       [EACCES]	      Search permission	is denied for a	component of the  path

       [EPERM]	      The effective user-id is not the superuser.

       [EROFS]	      The named	file resides on	a read-only file system.

       [EFAULT]	      The  pathname  points  outside  the  process's allocated
		      address space.

       [ELOOP]	      Too many symbolic	links are encountered  in  translating
		      the pathname.

       [EIO]	      An I/O error occurs while	reading	from or	writing	to the
		      file system.

       [ESTALE]	      The fd argument is invalid because the file referred  to
		      by  that	file  handle  no  longer  exists  or  has been

       The system call fails if:

       [EBADF]	      The fd argument does not refer to	a valid	descriptor.

       [EINVAL]	      The fd argument refers to	a socket, not a	file.

       [EPERM]	      The effective user-id is not the superuser.

       [EROFS]	      The named	file resides on	a read-only file system.

       [EIO]	      An I/O error occurred while reading from or  writing  to
		      the file system.

       [ETIMEDOUT]    A	connect	request	or remote file operation fails because
		      the connected party does not properly  respond  after  a
		      period  of  time that is dependent on the	communications

See Also
       chmod(2), flock(2)


Name | Syntax | Description | Return Values | Environment | Diagnostics | See Also

Want to link to this manual page? Use this URL:

home | help