Migrated from logicaletter.com
CHMOD aka Change mode is the command present in linux or unix like systems. Purpose
To change the mode of a file for specified user classes according to specified permissions with different function.
Making it simpler it is used to change the permission of file . The basic syntax looks like
chmod options permissions filename
Permissions
Permissions are boundary for file access that can be defined for each user classes.
User classes
Linux targets for multiple users on a single system. it is crucial to specify the classes of user so that the file is protected.The general classes of user are
- one who owns the file -“User”
- user who belong to file defined ownership group -“Group”
- other than user and group – “Other”
the mode or permission for file access for above user classes are
- Read “r” -the ability to look into the contents of file
- Write “w” -the ability to modify its content
- execute “x” -the ability to run the content of a file as a program
Lets create a file named tutorial.pdf using touch command
After creating the file. use ls -l comand
ls -l
on the left most side of tutorial.pdf you can see
-rw-r--r--
This is the permission for all user classes combined. The result may vary but let me break down this string with length of 10.
- The first ‘-‘ means this is a regular file remaining 9 symbols are for Users , Group and others respectively where each one gets 3 symbols
Take a look at file permission presented above and compare it with this.
Sn No | user class | permission | permission description |
---|---|---|---|
1 | User | rw- | Can read and write |
2 | Group | r– | can read and write |
3 | Others | r–- | can read only |
chmod can be used to change the permission of user class.for example : if i want to change the permission of User to read ,write and execute then
chmod u=rwx tutorial.pdf
if you want to change the mode for specific user classes then
- for user “u”
- for group “g”
chmod g=rwx tutorial.pdf
for others “o”
chmod o=rwx tutorial.pdf
Changing mode for all user classes
There are two ways that is going to be shown as example
chmod u=rwx,g=rwx,o=rwx tutorial.pdf
so what if you want to add rw for user and rx for group. you can perform that as well
chmod u=rw,g=rx tutorial.pdf
to set read , write and execute for all user classes.
chmod =rwx tutorial.pdf
Getting more technical
So briefing the symbolic mode as used in example we can update our syntax as
chmod objects [ugo][+-=][permission] filename
Operators [+-=]
The + operator adds new file access mode without destroying its previous file access mode. More like appending while file handling.
A real life example ” if you are trying to execute .sh file but permission is denied then you can use the following command
chmod +x filename.sh
The – operator removes specified mode
If filename.sh has a read , write permission and if you want to remove write permission then
chmod -w filename.sh
the = operator more like destroying its previous mode and adding new modes
if filename.sh had read , write and execute permission and if you used this command
chmod =w filename.sh
Now you can only change the content of file. or your permission has been updated to write only.
Changing the mode of file access can also be defined by octal numbers also
SN number | Modes | octal representation |
---|---|---|
1 | Read | 4 |
2 | Write | 2 |
3 | Execute | 1 |
4 | None | 0 |
Three digit octal number represents modes for user classes user, group and owner.
let me clear that with an example : if you want read, write and execute for User then the 1st position value would be
4+2+1 = 7
for Group you want just read then
4
for others you want read and execute then
4+1= 5
overall the three digit number would bw
745
the command would be now
chmod 745 somefile.sh
These all represents the general use of chmod commands . for options you can refer to