In Linux, every file and directory is owned by a user and a group. Ownership determines who can access or manage files on the system and is especially important in multi-user environments.
The chown command—short for change owner—is used to change the user
and/or group ownership of files, directories, and symbolic links. Because
ownership affects access control, chown usually requires root or sudo
privileges.
You can view the current owner and group using:
ls -l file_name
Example output:
-rw-rw-r-- 1 user group 42 Aug 29 21:58 test
Here:
useris the file ownergroupis the group owner
chown Command – Quick Reference
| Use Case | Command | Notes |
|---|---|---|
| Change owner of file | chown user file |
Requires root or sudo |
| Change group of file | chown :group file |
Colon required |
| Change owner & group | chown user:group file |
Most common usage |
| Recursive ownership change | chown -R user:group dir/ |
Use with caution |
| Copy ownership from another file | chown --reference=src dst |
Preserves consistency |
| Show changes | chown -v user file |
Verbose output |
| Show changes only if modified | chown -c user file |
Cleaner output |
| Change symlink ownership | chown -h user link |
Affects link only |
| Suppress errors | chown -f user file |
Hides file-not-found errors |
| View current owner & group | ls -l file |
Shows user and group |
chown vs chmod vs chgrp (Common Confusion)
| Command | Purpose |
|---|---|
chown |
Changes file owner and group |
chmod |
Changes file permissions (r/w/x) |
chgrp |
Changes group ownership only |
Basic chown Usage
This section covers the most common and frequently used chown commands.
These are usually the first commands you’ll use when managing file ownership
in Linux.
Change the Owner of a File
Use this command to assign a new user (owner) to a file.
The new owner must already exist on the system.
sudo chown new_owner file_name
This command changes only the user ownership.
The group ownership remains unchanged.
Change the Group of a File
To change only the group ownership, prefix the group name with a colon (:).
sudo chown :new_group file_name
The colon tells chown that the owner should remain the same
and only the group should be updated.
Change Owner and Group Together
You can change both the owner and group in a single command by separating them with a colon.
sudo chown new_owner:new_group file_name
This is one of the most commonly used chown commands in practice.
Using chown with IDs and Multiple Files
In some environments, usernames or group names may differ across systems. In such cases, using numeric IDs is more reliable.
Change Owner Using UID
Instead of a username, you can specify the user ID (UID).
sudo chown 1001 file_name
This assigns ownership to the user whose UID is 1001.
To find a user’s UID:
id -u user_name
Change Group Using GID
Similarly, you can change the group ownership using a group ID (GID).
sudo chown :1001 file_name
To find a group’s GID:
id -g group_name
Change Ownership of Multiple Files
You can change the owner of multiple files at once by listing them separated by spaces.
sudo chown new_owner file1 file2 file3
All listed files will be assigned the same owner. The group ownership remains unchanged unless explicitly specified.
Conditional Ownership Changes (Safer Operations)
Change Owner Only If Current Owner Matches
Use the --from option to change ownership only if the current owner matches.
If the condition is not met, no change is made.
sudo chown --from=current_owner new_owner file_name
This is useful when you want to avoid overriding ownership that may have already been modified by another process or user.
Change Group Only If Current Group Matches
Similarly, you can change the group ownership only if the file currently belongs to a specific group.
sudo chown --from=:current_group :new_group file_name
This ensures the group is updated only when the existing group matches.
Copy Ownership from Another File
You can copy both the owner and group from one file and apply them to another.
sudo chown --reference=source_file destination_file
This is especially useful when you want consistent ownership across configuration files or application directories.
Recursive chown Operations
Change Ownership Recursively on a Directory
Use the -R option to apply ownership changes recursively.
sudo chown -R new_owner:new_group directory_name
This command updates ownership for:
- The directory itself
- All subdirectories
- All files inside the directory tree
Symbolic Links and Special Files
Change Ownership of a Symbolic Link
To change the ownership of the symbolic link itself, use the -h option.
sudo chown -h new_owner:new_group symlink_name
This updates the ownership of the link without affecting the file it points to.
Difference Between -h and Default Behavior
Without the -h option:
sudo chown new_owner:new_group symlink_name
- Ownership is applied to the target file
- The symbolic link ownership remains unchanged
With the -h option:
- Ownership is applied to the symbolic link
- Target file ownership is not modified
This distinction is important when managing links in application or system directories.
Output Control and Error Handling
Show Changes with -v (Verbose)
Use -v to print detailed information about every ownership change.
sudo chown -v new_owner file_name
This prints output even if ownership remains unchanged.
Show Only Actual Changes with -c
Use -c to display output only when a change is made.
sudo chown -c new_owner file_name
This keeps output clean and is ideal for automation and logging.
Suppress Errors with -f
Use the -f (force) option to suppress error messages,
such as when a file does not exist.
sudo chown -f new_owner file_name
Note:
- Errors due to invalid users, groups, or syntax are still shown
- Only file-related errors are suppressed
Conclusion
The chown command is an essential Linux utility for managing file and
directory ownership. It allows you to safely change user and group ownership
for files, directories, and symbolic links when used correctly.
By following best practices—such as verifying paths, using conditional options, and applying recursive changes carefully—you can manage ownership reliably in both multi-user and production environments.

