chown

chown

The chown command in Unix and Linux is used to change the ownership of files and directories. This includes both the user and group ownership. Changing ownership is essential for managing access control and permissions in multi-user environments.

Basic Usage

The basic syntax for chown is:

chown [options] [owner][:group] file...
  • owner: The name or UID of the new owner.

  • group: The name or GID of the new group. The group can be omitted, changed, or specified alone by using a colon : (e.g., :group).

  • file: The file or directory whose ownership you want to change. Multiple files or directories can be specified.

Examples

Change Owner of a File

To change the owner of file.txt to the user alice:

chown alice file.txt

Change Owner and Group of a File

To change the owner of file.txt to alice and the group to developers:

chown alice:developers file.txt

Change Only the Group of a File

To change only the group of file.txt to staff:

chown :staff file.txt

Change Ownership of a Directory Recursively

To change the owner of all files and subdirectories within mydir to bob and the group to admins:

chown -R bob:admins mydir

Options

  • -c: Report only when a change is made.

  • -f: Suppress most error messages.

  • -v: Output a diagnostic for every file processed.

  • -R: Operate recursively, changing the ownership of all files and directories within the specified directory.

  • --reference=RFILE: Use RFILE's owner and group rather than specifying OWNER:GROUP values.

Practical Use Cases

  • Access Control: Assign files to appropriate users and groups to manage access permissions.

  • Project Collaboration: Change ownership of project files to a specific user and group that includes all collaborators.

  • System Administration: Adjust ownership for system files and directories to align with security policies.

Examples with Explanations

Changing Ownership Verbosely

To change the owner and group of document.txt to jane and staff and see detailed output:

chown -v jane:staff document.txt
  • The -v option provides a verbose output, showing what changes are made.

Suppressing Error Messages

To change the owner of logs/ to admin and suppress error messages:

chown -f admin logs/
  • The -f option suppresses most error messages, useful in scripts where you don't want error output.

Recursive Change in Ownership

To recursively change the owner of all items within /var/www to www-data:

chown -R www-data:www-data /var/www
  • The -R option ensures that the ownership of all files and subdirectories within /var/www is changed.

Summary

The chown command is an essential tool for managing ownership of files and directories in Unix and Linux systems. It allows for efficient control over access permissions, enabling better management of multi-user environments. Mastery of chown and its options helps in maintaining proper access control and ensuring that files and directories have the correct ownership for security and collaboration purposes.

help

Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
  or:  chown [OPTION]... --reference=RFILE FILE...
Change the owner and/or group of each FILE to OWNER and/or GROUP.
With --reference, change the owner and group of each FILE to those of RFILE.

  -c, --changes          like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --dereference      affect the referent of each symbolic link (this is
                         the default), rather than the symbolic link itself
  -h, --no-dereference   affect symbolic links instead of any referenced file
                         (useful only on systems that can change the
                         ownership of a symlink)
      --from=CURRENT_OWNER:CURRENT_GROUP
                         change the owner and/or group of each file only if
                         its current owner and/or group match those specified
                         here.  Either may be omitted, in which case a match
                         is not required for the omitted attribute
      --no-preserve-root  do not treat '/' specially (the default)
      --preserve-root    fail to operate recursively on '/'
      --reference=RFILE  use RFILE's owner and group rather than
                         specifying OWNER:GROUP values
  -R, --recursive        operate on files and directories recursively

The following options modify how a hierarchy is traversed when the -R
option is also specified.  If more than one is specified, only the final
one takes effect.

  -H                     if a command line argument is a symbolic link
                         to a directory, traverse it
  -L                     traverse every symbolic link to a directory
                         encountered
  -P                     do not traverse any symbolic links (default)

      --help     display this help and exit
      --version  output version information and exit

Owner is unchanged if missing.  Group is unchanged if missing, but changed
to login group if implied by a ':' following a symbolic OWNER.
OWNER and GROUP may be numeric as well as symbolic.

Examples:
  chown root /u        Change the owner of /u to "root".
  chown root:staff /u  Likewise, but also change its group to "staff".
  chown -hR root /u    Change the owner of /u and subfiles to "root".

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/chown>
or available locally via: info '(coreutils) chown invocation'

Last updated