Chown is a command on Linux that is used in order to change the owner of a set of files or directories.
Chown comes with multiple options and it is often used to change the group owning the file.
However, in some cases, you may need to change the owner of a directory with all the files in it.
For that, you may need to use one of the options of the chown command : recursive chown.
In this tutorial, you are going to learn how you can recursively use the chown command to change folders and files permissions recursively.
Chown Recursively
The easiest way to use the chown recursive command is to execute “chown” with the “-R” option for recursive and specify the new owner and the folders that you want to change.
$ chown -R <owner> <folder_1> <folder_2> ... <folder_n>
For example, if you want to change the owner of directories and files contained in the home directory of a specific user, you would write
$ chown -R user /home/user
Note : if you need a complete guide on the chown command, we wrote an extensive one about file permissions on Linux.
Chown User and Group Recursively
In order to change the user and the group owning the directories and files, you have to execute “chown” with the “-R” option and specify the user and the group separated by colons.
$ chown -R <user>:<group> <folder_1> <folder_2> ... <folder_n>
For example, let’s say that you want to change the user owning the files to “user” and the group owning the files to “root”.
In order to achieve that, you would run the following command
$ chown -R user:root /home/user
Congratulations, you successfully use the “chown” command recursively to change owners on your server!
- Chown Command in Linux (File Ownership)
- Access Control Lists on Linux Explained | Linux ACL Cheat Sheet
- How To Encrypt Partition on Linux
Chown recursively using find
Another way of using the “chown” command recursively is to combine it with the “find” command in find files matching a given pattern and changing their owners and groups.
$ find <path> -name <pattern> -exec chown <user>:<group> {} \;
For example, let’s say that you want to change the owner for all the TXT files that are present inside a given directory on your server.
First of all, it is very recommended to execute the “find” command alone in order to verify that you are matching the correct files.
In this example, we are going to match all the TXT files in the home directory of the current user.
$ find /home/user -name *.txt
Now that you made sure that you are targeting the correct files, you can bind it with the “chown” in order to recursively change permissions.
$ find /home/user -name *.txt -exec chown user {} \;
As you can see, the owner of the TXT files were changed, yet none of the other files and directories were altered.
Being careful with recursive chown
On Linux, executing commands such as chown, chmod or rm is definitive : there is no going back.
As a consequence, you will have to be very careful not to execute any commands that will harm your system.
This point is illustrated in the previous section : we run the find command alone and we made sure it was the correct result.
Then, we executed the chown command in order to recursively change files permissions from the previous command.
As a rule of thumb : if you are not sure of the output of a command, divide it into smaller pieces until you are sure that you won’t execute anything harmful.
Conclusion
In this tutorial, you learnt how you can execute the chown command recursively on your system.
You learnt that you can achieve it using the “-R” option or by combining it with the find command.
Linux Permissions are a wide topic : we really encourage you to have a look at our complete guide on Linux Permissions if you want to learn more.
Also, if you are interested in Linux System Administration, we have a complete section dedicated to it on the website, so make sure to check it out!