Every file and directory in Linux has an owner and a group
associated with it. The need commonly arises where the user or
group ownership for files or directories needs to be changed.
For example, if user the sally, in group finance is responsible
for a number of files and Sally gets transferred to the
purchasing group the ownership of the files might need to be
changed to marge because Marge is the user who is taking Sally?s
place in finance. The
chown command is used to
change file or directory ownership.
As another example if a
number of files that are currently accessed by the test group
are ready for production and need to be changed to the prod
group, the chgrp command can be used to give access to the prod
group.
Actually the chown command can be used to
change both user and group ownership, while the chgrp
command can only be used to change group ownership. This command
will be covered later in this chapter. When using either chown
or chgrp commands, the system will first check the permissions
of the user issuing the commands to make certain they have
sufficient permissions to make the change.
Now we?ll look at some examples of how to use the chown and
chgrp commands. We?ll start with the chgrp command, then look at
chown and then finally see how chown can be used to do the work
of both!
Change Group Ownership with chgrp
The chgrp
command is used to
change the group with which a file is associated. The first
thing you will need to provide this command is the group which
you want to change the file or directory to. After that you can
list a single file or directory to be changed or list separate
entities separated by spaces. The chgrp
command
will not have any affect on the access granted to the group (the
rw- in the middle of the three permissions sets) but will change
who can use those permissions.
Using the chgrp Command on a File
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 tclark authors 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
# chgrp presidents gettysburg.txt
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 tclark presidents 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
The chgrp
command works the same for directories
as it does for files. In the following example, the group
ownership of the directory called examples will be changed.
Directories are identified by the letter d in the first column
of the ls ?l display.
Using the chgrp
Command on a Directory
# ls -l
total 4
-rw-rw-r? 1 tclark tclark 0 Jan 13 21:13 example1.fil
-rw-rw-r? 1 tclark tclark 0 Jan 13 21:13 example2.xxx
drwxrwxr-x 2 tclark tclark 4096 Jan 13 21:35 examples
# chgrp authors examples
# ls -l
total 4
-rw-rw-r? 1 tclark tclark 0 Jan 13 21:13 example1.fil
-rw-rw-r? 1 tclark tclark 0 Jan 13 21:13 example2.xxx
drwxrwxr-x 2 tclark authors 4096 Jan 13 21:35 examples
You can change the group for multiple files and/or
directories by using the ?R
(recursive) option for
the chgrp
command. This is one of the few commands
(we?ll see two of the others shortly) which use an upper-case R
for the recursive option. When applied on a directory the
?R
option will apply the chgrp
command to
the directory and all its subdirectories and files. Care should
be taken when using the ?R
option.
Next we?ll look at changing the ownership of files.
Change User Ownership
The chown
(change owner)
command can be used to change ownership of a file or directory.
The syntax is very similar to chgrp
.
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 tclark authors 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
# chown abe gettysburg.txt
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 abe authors 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
Just like with chgrp
we see that chown accepts
the username of the user who should get ownership and the file
or directory to change. Again we could list multiple files or
directories here with spaces separating them.
The chown command can be used to change the group ownership
instead of the user ownership of a file or directory. If you
wish to use chown to change the group ownership you can list a
group preceded with either a colon (:) or a period (.). Here?s
an example of how to use chown to change the group ownership of
a file:
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 abe authors 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
# chown :presidents gettys*
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 abe presidents 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
If you wish to simultaneously change both the user and group
ownership of a file you can specify the user and group in the
format of user:group
.
In the following example the user will be changed back to
tclark and the group back to authors using a single command.
Using the chown Command to Change File Ownership
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 abe presidents 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
# chown tclark:authors gettys*
# ls -l
total 12
-rw-rw-r? 1 tclark authors 2229 Jan 13 21:35 declaration.txt
-rw-rw-r? 1 tclark authors 1310 Jan 13 17:48 gettysburg.txt
-rw-rw-r? 1 tclark authors 360 Jan 13 17:48 preamble.txt
Here we see the user and group has been changed with a single
command. Just like with chgrp the chown command will take the
?R
(recursive) option and apply the chown command
to a directory and its subdirectories. This should be used with
care.