The chown command is useful for making changes to the user or group ownership of a certain file, directory, or symbolic link.
Every file is associated with a file owner or a group. This grants the file or group owner permission access rights to edit, modify, and make changes to the file.
If you aren’t the file owner and want to change the ownership or change the group assigned with the permission rights, the chown command is exactly the command to do this for you.
Learning how to change the ownership of a file with the chown command is a straightforward process. Before we dive in, here’s a few requisites to note:
- Linux system
- Access to the command line (this is where we’ll be using the chown command)
- Sudo privileges (only the sudo or owner of a file has permission access to change the owner. If you don’t have ownership of a file, you won’t be able to execute the chown command properly).
Chown Command Basic Syntax
Learning how to use the chown command starts by understanding the basic syntax behind it:
chown [OPTIONS] USER[ :GROUP] FILE(s)
USER – Refers to the user ID or user name of the new owner of a file
GROUP – Refers to the new group user name or user ID who has ownership of a file
[OPTIONS] – Allows you to use the command with or without additional options
[:] – A colon is used when you want to change the group of a file
FILE(s) – Refers to the name of the directory, file, or symbolic link
Some notes to remember:
- If you specify only the USER, then this will change the owner of the files to the specified user; however, because only the USER was specified, group ownership will not change.
- If both the USER and GROUP were specified, this would change the ownership to the specified user and the group ownership.
- If the username specified follows a colon (USER:) without specifying the group, then this will change the owner of the file to the specified user, while the files group ownership will be changed to the user’s login group.
Checking the Chown Command version
If you want to check the version of your chown in Linux, simply type:
How to Check File Ownership Using Chown
Before you can change the owner or the group ownership with the chown command, you have to find out who the original owner or group name.
This will allow you to specify the login group or owner name and change the user and group ownership of the files and directories.
To check for the user or group ownership of the files and directories, we’ll use the ls -l command:
ls -l sample.txt
You’ll be presented with the following output:
drwxr-xr-x 2 Dave users 12.0K Apr 02 18:34 sample.txt
Dave – Refers to the owner
users – Refers to the group
We can also use the ls -l command for directories:
ls -l directory1
Changing the Owner of a File With Chown
If you want to change the owner of a file, the command will be as follows:
chown USER FILE
USER – Refers to the new user name or ID you want to change ownership to
FILE – the name of the file
For example, we want to change ownership for sample.txt to user Mark17. To do this, simply type:
chown Mark17 sample.txt
Similarly, you can also use the user ID instead of the username. Let’s say Mark17’s user ID is 1001. The command will now be as follows:
chown 1001 sample.txt
To change a file and a directory with the chown command, simply type:
chown Mark17 sample.txt directory1
Changing the Owner and Group of a File
Changing the owner and group of a file will require the (:) along with the chown command.
Note that there shouldn’t be any space between the new owner and group specified:
chown USER:GROUP FILE
For example, changing the owner and group ownership for the file sample.txt, type the command:
chown Mark17:users sample.txt
If you don’t specify the group after the (:), the group file will be changed to the user’s login group:
chown Mark17: sample.txt
Changing the Group of a file
To change the group of a file, we use the (:) and the GROUP name specified after that:
chown :GROUP FILE
For example, you want to change ownership to the group name users1. To do this, type the command:
chown :users1 sample.txt
Changing the Symbolic Link Ownership
When changing the symbolic link ownership, it’s important to remember that without using a recursive chown command, chown will change the ownership of the file to where the symlink points to and not the symbolic link itself.
When you run chown with the recursive option, you’ll most likely experience an error message:
"cannot dereference 'symlink1': Permission denied" error
To change group ownership of the symlink, you’ll have to use the -h option:
chown -h users1 symlink1
Using Chown Recursive Command to Change File Ownership
If you want to recursively operate all directories and file under a certain directory, this is where the -r option becomes useful:
chown -r USER:GROUP directory
The command, as shown above, will change ownership of all subdirectories and files under/var/xxx directory to a new user and group with the name “xxx-users.”
chown -r xxx-users: /var/xxx
Now, what happens if the directory contains symbolic links? Using the chown command with the recursive and -h option should allow you to chown recursively the symbolic links:
chown -hR xxx-users: /var/xxx
How to Display Chown Process Details
When you execute the chown command, the terminal will not reveal the details of the chown process. If you want to view the details, you can choose from two options: -v and -c.
-v – This will reveal the chown process details even if the ownership stays the same
-c – This will revel the chown process details only when the owner or group of certain file changes
For example, if we want to specify the current owner as the new owner of a specific file “sample.txt”
chown -v Mark17 sample.txt
Through this command, you’ll be presented with the output:
ownership of 'sample.txt' retained as Mark17
Using both the -v and -c options are especially beneficial when combined with the recursive option:
chown -v -R Mark17 sample.txt Output Ownership of 'sample.txt' retained as Mark17 Changed ownership of 'sample2.txt' from user1 to Mark17 Ownership of 'sample3.txt' retained as Mark17
By using both the -v and -R option, this will allow you to see all variables affected once you execute the command.
Using the chown command is useful, especially for team-based settings and for managing a wide group of members.
This gives you the advantage of specifying certain users and a specific group to have permission access and ownership for files and directories conveniently.
Convenience aside, you should also take precautions when changing ownership of a file to a new owner or group.
Granting access to files or directories that contain sensitive information you might have overlooked poses potential risks to your Linux system.
Make sure to use the ls -l command to check who the owner of a file is first.
We hope this article has helped you understand more about the chown command and how to use it!
If you’re still confused about how to use chown, you can check out the chown man page or type “man chown” in your command line/terminal.