The series of commands shown here are used to change the owner or owner group of a file or its permissions. We looked at the different permissions in chapter Basic Unix concepts of the User Guide.
The syntax of the chown (CHange OWNer) command is as follows:
chown [options] <user[.group]> <file|directory> [file|directory...] |
The options include:
-R: recursive. To change the owner of all files and subdirectories in a given directory.
-v: verbose mode. Displays all actions performed by chown; reports which files have changed owner as a result of the command and which files have not been changed.
-c: like -v, but only reports which files have been changed.
Some examples:
chown nobody /shared/book.tex: changes the owner of the /shared/book.tex file to nobody.
chown -Rc pingusa.music *.mid concerts/: changes the ownership of all files in the current directory whose name ends with .mid and all files and subdirectories in the concerts/ directory to user pingusa and group music, reporting only files affected by the command.
The chgrp (CHange GRouP) command lets you change the group ownership of a file (or files); its syntax is very similar to that of chown:
chgrp [options] <group> <file|directory> [file|directory...] |
chgrp disk /dev/hd* |
The chmod (CHange MODe) command has a very distinct syntax. The general syntax is:
chmod [options] <change mode> <file|directory> [file|directory...] |
in octal; the owner user permissions then correspond to figures with the form <x>00, where <x> corresponds to the permission assigned: 4 for read permission, 2 for write permission and 1 for execute permission; similarly, the owner group permissions take the form <x>0 and permissions for "others" the form <x>. Then all you need to do is add together the assigned permissions to get the right mode. Thus, the permissions rwxr-xr-- correspond to 400+200+100 (owner permissions, rwx) +40+10 (group permissions, r-x) +4 (others' permissions, r--) = 754; in this way, the permissions are expressed in absolute terms. This means that previous permissions are unconditionally replaced;
with expressions: here permissions are expressed by a sequence of expressions separated by commas. Hence an expression takes the form [category]<+|-|=><permissions>.
The category may be one or more of:
u (User, permissions for owner);
g (Group, permissions for owner group);
o (Others, permissions for "others").
If no category is specified, changes will apply to all categories. A + sets a permission, a - removes the permission and a = sets the permission. Finally, the permission is one or more of the following:
r (Read);
w (Write) or;
x (eXecute).
The main options are quite similar to those of chown or chgrp:
-R: changes permissions recursively.
-v: verbose mode. Displays the actions carried out for each file.
-c: like -v but only shows files affected by the command.
Examples:
chmod -R o-w /shared/docs: recursively removes write permission for others on all files and subdirectories in the /shared/docs/ directory.
chmod -R og-w,o-x private/: recursively removes write permission for group and others for the whole private/ directory, and removes the execution permission for others.
chmod -c 644 misc/file*: changes permissions of all files in the misc/ directory whose names begin with file to rw-r--r-- (i.e. read permission for everyone and write permission only for the owner), and reports only files affected by this command.