If you want to change the user and/or group ownership of a given file, directory, or symbolic link, the chown
command is used. So in this article, we will show you how to use the chown
command through practical examples.
Let us see How to Use chown
.
Before moving into how to use the chown
command, let’s begin by examining the basic syntax.
- How To Chown Recursively on Linux
- Access Control Lists on Linux Explained | Linux ACL Cheat Sheet
- How To Encrypt Partition on Linux
The chown
command expressions take the subsequent form:
chown [OPTIONS] USER[:GROUP] FILE(s)
USER is nothing but the user name or the user ID (UID) of the new owner. The name of the group ID (GID) or the new group is GROUP. The name of one or more directories, files, or links is FILE(s). Remember, always numeric IDs should be prefixed with the + symbol.
- USER – If only the user is defined, the defined user will grow the given file owner, the group ownership is not changed.
- USER: – When the username is succeeded by a colon: and the group name is not given, the user will become the owner of the files, and the files group ownership is transferred to the user’s login group.
- USER: GROUP – If both the group and the user are defined (with no space between them), the user ownership of the files is transferred to the given user, and the group ownership is transferred to the given group.
- GROUP – If the User is canceled and the group is prefixed with a colon, only the files’ group ownership is transferred to the given group.
- : If only a colon: is given, without defining the user and the group, no change is made in it.
By default, on success, chown doesn’t give any output and returns zero.
To find out who holds a file or what group the file refers to, use the ls -l command:
$ ls -l filename.txt
Output: -rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt
Regular users can replace the filegroup only if they own the file and only to a group they are a member of. Administrative users can replace the group ownership of all files.
How to Replace the Owner of a File
If you want to replace the owner of a file, then use the chown
command succeeded by the user name of the new owner and the target file as an argument:
chown USER FILE
For example, the subsequent command will transfer the ownership of a file named file1 to a new owner named linuxize:
$ chown linuxize file1
To transfer the ownership of multiple files or directories, define them as a space-separated list. The command below turns the ownership of a file named file1 and directory dir1 to a new owner named linuxize:
$ chown linuxize file1 dir1
For example, the subsequent command will transfer the ownership of a file named file1 to a new owner named linuxize:
$ chown linuxize file1
To transfer the ownership of multiple files or directories, specify them as a space-separated list. The command following transfers the ownership of a directory with name dir1 and a file with name file1 to a new owner named linuxize:
$ chown linuxize file1 dir1
The alternatively used for the username is the numeric user ID (UID). The following example will transfer the ownership of a file named file2 to a new owner with a UID of 1000:
$ chown 1000 file2
If a numeric owner survives as a user name, then the ownership will be transferred to the user name. To bypass this, prefix the ID with +:
$ chown 1000 file2
How to Replace the Owner and Group of a File
If you want to replace both the owner and the group of a file, use the chown command supported by the new owner and group separated by a colon (:) with no intermediary spaces and the target file.
$ chown USER: GROUP FILE
The subsequent command will transfer the ownership of a file named file1 to a new owner named linuxize and group users:
$ chown linuxize: users file1
If you cancel the group name after the colon (:) the group of the file is replaced to the specified user’s login group:chown linuxize: file1
How to Replace the Group of a File
To replace only the group of a file, use the chown command followed by a colon (:) and the new group name (with no space between them) and the target file as an argument:
$ chown: GROUP FILE
The subsequent command will replace the owning group of a file named file1 to www-data:
$ chown :www-data file1
Another command that you can use to replace the group ownership of files is chgrp.
How to Replace Symbolic Links Ownership
When the recursive alternative is not used, the chown command replaces the group ownership of the files to which the symlinks point, not the symbolic links themselves.
For example, if you try to replace the owner and the group of the symbolic link symlink1 that points to /var/www/file1, chown will change the ownership of the file or directory the symlink points to:
$ chown www-data: symlink1
The possibilities are that instead of changing the target ownership, you will get an error “cannot dereference ‘symlink1’: Permission denied”.
The error happens because, by default on most Linux distributions, symlinks are protected, and you cannot work on target files. This option is defined in /proc/sys/fs/protected_symlinks. One means enabled, and zero means disabled. We suggest not to disable the symlink protection.
To replace the group ownership of the symlink itself, use the -h option:
$ chown -h www-data symlink1
How to Recursively Replace the File Ownership
To recursively run on all files and directories under the given directory, use the -R (–recursive) alternative:
$ chown -R USER: GROUP DIRECTORY
The following example will transfer the ownership of all files and subdirectories under the /var/www directory to a new owner and group named www-data:
$ chown -R www-data: /var/www
If the directory contains symbolic links, pass the -h option:
$ chown -hR www-data: /var/www
Other alternatives that can be used when recursively replacing the directory ownership are -H
and -L
.
If the argument passed to the chown
command is a symbolic link pointing to a directory, the -H
option will create the command to cross it. -L
tells chown to cross each symbolic link to a guide that is found. Usually, it would be best to use these choices because you might mess up your system or perform a security risk.
Using a Reference File
The -- reference = ref_file
option enables you to change the user and group ownership of given files to be the same as those of the detailed reference file (ref_file
). Chown will use the target file user and group; if the reference file is a symbolic link.
$ chown --reference=REF_FILE FILE
For instance, the subsequent command will allow the user and group ownership of the file1
to file2
$ chown --reference=file1 file2
Conclusion
The chown
is a Linux/UNIX command-line service for developing the file’s user and/or group ownership.
To discover more about the chown command, visit the chown man page or type man chown
in your terminal. If you have any questions or feedback, please leave a comment below or contact us directly.