Provided by: manpages-posix_2017a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

NAME

       chown — change the file ownership

SYNOPSIS

       chown [-h] owner[:group] file...

       chown -R [-H|-L|-P] owner[:group] file...

DESCRIPTION

       The chown utility shall set the user ID of the file named by each file operand to the user
       ID specified by the owner operand.

       For each file operand, or, if the -R option is used, each file encountered  while  walking
       the  directory  trees  specified  by  the  file  operands, the chown utility shall perform
       actions equivalent to the chown() function defined in  the  System  Interfaces  volume  of
       POSIX.1‐2017, called with the following arguments:

        1. The file operand shall be used as the path argument.

        2. The  user  ID indicated by the owner portion of the first operand shall be used as the
           owner argument.

        3. If the group portion of the first operand is given, the group ID indicated by it shall
           be used as the group argument; otherwise, the group ownership shall not be changed.

       Unless chown is invoked by a process with appropriate privileges, the set-user-ID and set-
       group-ID bits of a regular file shall be cleared upon successful completion; the set-user-
       ID and set-group-ID bits of other file types may be cleared.

OPTIONS

       The  chown  utility  shall conform to the Base Definitions volume of POSIX.1‐2017, Section
       12.2, Utility Syntax Guidelines.

       The following options shall be supported by the implementation:

       -h        For each file operand that names a file  of  type  symbolic  link,  chown  shall
                 attempt  to  set  the user ID of the symbolic link. If a group ID was specified,
                 for each file operand that names a file  of  type  symbolic  link,  chown  shall
                 attempt to set the group ID of the symbolic link.

       -H        If  the  -R  option  is specified and a symbolic link referencing a file of type
                 directory is specified on the command line, chown shall change the user ID  (and
                 group ID, if specified) of the directory referenced by the symbolic link and all
                 files in the file hierarchy below it.

       -L        If the -R option is specified and a symbolic link referencing  a  file  of  type
                 directory  is  specified on the command line or encountered during the traversal
                 of a file hierarchy, chown shall change the user ID (and group ID, if specified)
                 of  the  directory  referenced  by  the  symbolic link and all files in the file
                 hierarchy below it.

       -P        If the -R option is specified and a symbolic link is specified  on  the  command
                 line or encountered during the traversal of a file hierarchy, chown shall change
                 the owner ID (and group ID, if  specified)  of  the  symbolic  link.  The  chown
                 utility  shall  not  follow  the  symbolic  link  to  any other part of the file
                 hierarchy.

       -R        Recursively change file user and group IDs. For each file operand that  names  a
                 directory,  chown  shall  change the user ID (and group ID, if specified) of the
                 directory and all files in the file hierarchy below it. Unless a -H, -L,  or  -P
                 option  is  specified,  it is unspecified which of these options will be used as
                 the default.

       Specifying more than one of the mutually-exclusive options -H, -L, and  -P  shall  not  be
       considered  an  error.  The  last  option  specified  shall  determine the behavior of the
       utility.

OPERANDS

       The following operands shall be supported:

       owner[:group]
                 A user ID and optional group ID to be assigned to file.  The  owner  portion  of
                 this  operand  shall be a user name from the user database or a numeric user ID.
                 Either specifies a user ID which shall be given to each file named by one of the
                 file  operands. If a numeric owner operand exists in the user database as a user
                 name, the user ID number associated with that user name shall  be  used  as  the
                 user ID. Similarly, if the group portion of this operand is present, it shall be
                 a group name from the group database or a numeric group ID. Either  specifies  a
                 group ID which shall be given to each file. If a numeric group operand exists in
                 the group database as a group name, the group ID  number  associated  with  that
                 group name shall be used as the group ID.

       file      A pathname of a file whose user ID is to be modified.

STDIN

       Not used.

INPUT FILES

       None.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of chown:

       LANG      Provide a default value for the internationalization variables that are unset or
                 null.  (See  the  Base  Definitions  volume  of   POSIX.1‐2017,   Section   8.2,
                 Internationalization   Variables  for  the  precedence  of  internationalization
                 variables used to determine the values of locale categories.)

       LC_ALL    If set to a non-empty string  value,  override  the  values  of  all  the  other
                 internationalization variables.

       LC_CTYPE  Determine  the  locale for the interpretation of sequences of bytes of text data
                 as characters (for example, single-byte as opposed to multi-byte  characters  in
                 arguments).

       LC_MESSAGES
                 Determine  the  locale  that should be used to affect the format and contents of
                 diagnostic messages written to standard error.

       NLSPATH   Determine the location of message catalogs for the processing of LC_MESSAGES.

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       Not used.

STDERR

       The standard error shall be used only for diagnostic messages.

OUTPUT FILES

       None.

EXTENDED DESCRIPTION

       None.

EXIT STATUS

       The following exit values shall be returned:

        0    The utility executed successfully and all requested changes were made.

       >0    An error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       Only the owner of a file or the user with appropriate privileges may change the  owner  or
       group of a file.

       Some implementations restrict the use of chown to a user with appropriate privileges.

EXAMPLES

       None.

RATIONALE

       The  System  V and BSD versions use different exit status codes. Some implementations used
       the exit status as a count of the  number  of  errors  that  occurred;  this  practice  is
       unworkable  since  it can overflow the range of valid exit status values. These are masked
       by specifying only 0 and >0 as exit values.

       The functionality of chown is described substantially through references to  functions  in
       the  System  Interfaces  volume  of  POSIX.1‐2017. In this way, there is no duplication of
       effort required for describing the interactions of permissions, multiple  groups,  and  so
       on.

       The  4.3  BSD  method  of  specifying  both owner and group was included in this volume of
       POSIX.1‐2017 because:

        *  There are cases where the desired end condition could not be achieved using the  chgrp
           and  chown  (that  only changed the user ID) utilities. (If the current owner is not a
           member of the desired group and the desired owner is  not  a  member  of  the  current
           group,  the chown() function could fail unless both owner and group are changed at the
           same time.)

        *  Even if they could be changed independently, in cases where both  are  being  changed,
           there is a 100% performance penalty caused by being forced to invoke both utilities.

       The  BSD  syntax  user[.group]  was changed to user[:group] in this volume of POSIX.1‐2017
       because the <period> is a valid character  in  login  names  (as  specified  by  the  Base
       Definitions  volume  of  POSIX.1‐2017,  login  names consist of characters in the portable
       filename character set). The <colon> character was  chosen  as  the  replacement  for  the
       <period>  character  because  it  would  never be allowed as a character in a user name or
       group name on historical implementations.

       The -R option is considered by  some  observers  as  an  undesirable  departure  from  the
       historical  UNIX system tools approach; since a tool, find, already exists to recurse over
       directories, there seemed to be no good reason to require other tools to have to duplicate
       that  functionality.   However, the -R option was deemed an important user convenience, is
       far more efficient than forking a separate process  for  each  element  of  the  directory
       hierarchy, and is in widespread historical use.

FUTURE DIRECTIONS

       None.

SEE ALSO

       chgrp, chmod

       The  Base  Definitions  volume  of POSIX.1‐2017, Chapter 8, Environment Variables, Section
       12.2, Utility Syntax Guidelines

       The System Interfaces volume of POSIX.1‐2017, chown()

COPYRIGHT

       Portions of this text are reprinted and  reproduced  in  electronic  form  from  IEEE  Std
       1003.1-2017,  Standard  for  Information Technology -- Portable Operating System Interface
       (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C)  2018  by
       the  Institute  of  Electrical  and Electronics Engineers, Inc and The Open Group.  In the
       event of any discrepancy between this version and the original IEEE  and  The  Open  Group
       Standard,  the  original  IEEE  and  The  Open Group Standard is the referee document. The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

       Any typographical or formatting errors that appear in this page are most  likely  to  have
       been  introduced  during  the conversion of the source files to man page format. To report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .