chown Command

The chown command (change owner) modifies the ownership of files and directories in Linux and Unix systems. It can change the user owner, group owner, or both, making it essential for system administration and file access control.

Syntax

chown [options] [user][:group] file...

Description

The chown command changes the ownership of files and directories. Every file has an owner (user) and a group owner. Ownership determines who can access and modify files, working together with permissions to control file security.

Ownership display: -rwxr-xr-x 1 user group 1234 Jan 21 10:30 file.txt

  • user: The user who owns the file
  • group: The group that owns the file
  • Requires privileges: Usually needs sudo for changing ownership

Syntax Variations

  • chown user file - Change user owner only
  • chown user:group file - Change user and group owner
  • chown user: file - Change user and set group to user's primary group
  • chown :group file - Change group owner only
  • chown user.group file - Alternative syntax with dot separator

Common Options

Option Description Example
-R Recursive (change ownership of directories and contents) chown -R user:group dir/
-v Verbose (show what's being changed) chown -v user file.txt
-c Report only when changes are made chown -c user file.txt
--reference Copy ownership from reference file chown --reference=ref.txt file.txt
-h Change ownership of symbolic links chown -h user symlink

Understanding Ownership

User Owner (UID): The user who owns the file and has full control

Group Owner (GID): The group that owns the file, allowing group access

Numeric IDs: Users and groups are stored as numeric IDs internally

Name Resolution: Names are resolved using /etc/passwd and /etc/group

Examples

Change user owner only

sudo chown alice file.txt # Change owner to alice
sudo chown 1001 document.pdf # Change owner using UID
sudo chown root /etc/config.conf # Change owner to root

Change the user owner while keeping the same group

Change group owner only

sudo chown :developers file.txt # Change group to developers
chgrp staff document.pdf # Alternative using chgrp
sudo chown :1002 script.sh # Change group using GID

Change only the group owner, leaving user owner unchanged

Change both user and group

sudo chown alice:developers file.txt # User alice, group developers
sudo chown bob:staff project/ # Change directory ownership
sudo chown www-data:www-data /var/www/ # Web server ownership

Change both user and group ownership simultaneously

Recursive ownership changes

sudo chown -R alice:users /home/alice/ # Change entire home directory
sudo chown -R www-data:www-data /var/www/ # Web directory ownership
sudo chown -R root:root /etc/secure/ # Secure system files

Apply ownership changes to directories and all their contents

Using reference files

sudo chown --reference=template.txt new_file.txt
ls -l template.txt new_file.txt
# Both files now have same ownership

Copy ownership from an existing file to match permissions

Verbose output

sudo chown -v alice:developers *.txt
# Output: changed ownership of 'file1.txt' from root:root to alice:developers
# Output: changed ownership of 'file2.txt' from root:root to alice:developers

See detailed information about ownership changes

🔒 Security Best Practices

  • Use sudo: Always use sudo for ownership changes requiring privileges
  • Verify changes: Use ls -l to confirm ownership changes
  • Backup important files: Create backups before mass ownership changes
  • Understand implications: Changing ownership affects file access
  • System files: Be extremely careful with /etc, /bin, /usr ownership
  • Web security: Use appropriate web server user/group for web files

Common Use Cases

  • Web server setup: sudo chown -R www-data:www-data /var/www/
  • User home directory: sudo chown -R user:user /home/user/
  • Database files: sudo chown mysql:mysql /var/lib/mysql/
  • Log files: sudo chown syslog:adm /var/log/app.log
  • Shared directories: sudo chown :shared /opt/shared/
  • SSH keys: chown user:user ~/.ssh/id_rsa

Troubleshooting

  • "Operation not permitted": Use sudo or check if you own the file
  • "Invalid user": Verify username exists in /etc/passwd
  • "Invalid group": Check group exists in /etc/group
  • Symbolic links: Use -h to change link ownership, not target
  • Network filesystems: Some NFS mounts may not support chown

See also