How Linux file permissions work
Linux (and almost all other Unixish systems) have three user classes as follows:
- User (u): The owner of file
- Group (g): Other user who are in group (to access files)
- Other (o): Everyone else
You can setup following mode on each files. In a Linux and UNIX set of permissions is called as mode:
- Read (r)
- Write (w)
- Execute (x)
However, above three modes or permission have different meaning for file and directory:
Linux Read mode permissions
- Read access on a file allows you to view file
- Read access on a directory allows you to view directory contents with ls command
Write mode permissions
- Write access on a file allows you to write to file
- Write access on a directory allows you to remove or add new files
Execute mode permissions
- Execute access on a file allows to run program or script
- Execute access on a directory allows you access file in the directory
Octal numbers and permissions
You can use octal number to represent mode/permission:
- r: 4
- w: 2
- x: 1
For example, for file owner you can use octal mode as follows. Read, write and execute (full) permission on a file in octal is
0+r+w+x = 0+4+2+1 = 7
Only Read and write permission on a file in octal is
0+r+w+x = 0+4+2+0 = 6
Only read and execute permission on a file in octal is
0+r+w+x = 0+4+0+1 = 5
Use above method to calculate permission for group and others. Let us say you wish to give full permission to owner, read & execute permission to group, and read only permission to others, then you need to calculate permission as follows:
User = r+w+x = 0+4+2+1 = 7
Group= r+w+x = 0+4+2+0 = 6
Others = r+w+x = 0+0+0+1 = 1
Effective permission is 761.
chmod command
To setup file permission you need to use chmod command:
chmod {mode} {file-name}
To setup file permission 761 you need to use chmod command as follows:
# chmod 0761 file
To setup a file readable by anyone and writable by the owner only:
# chmod 644 file
To setup a file readable/executable by everyone and writable by the owner only:
# chmod 755 file
You can change permissions for all files and directories within a directory by using the -R option on the chmod command. For example, to setup others read and execute access to all files and directories (and files and directories within directories), you need to type command as follows (i.e. change the modes of the file hierarchies rooted in the files instead of just the files themselves):
# chmod -R 755 directory-name/
Further readings
- Access rights: Linux's first line of defense
- Read chmod command man page for more information.
Subscribe to our free e-mail newsletter or RSS feed to get all updates.
You can Email this page to a friend.
Related Other Helpful FAQs:
- Linux/UNIX: chmod error
- Can I set the permissions on a symbolic link under Linux/UNIX?
- Linux / UNIX - Display the permissions of a file
- Linux or UNIX change file permissions recursively ( conditional )
- Examining the Linux / FreeBSD / UNIX filesystem with ls command
Discussion on This FAQ
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!
Tags: access_file, chmod_command, file_modes, Linux, octal_numbers_permissions, permissions



February 14th, 2006 at 8:05 pm
What about sticky bits?
February 14th, 2006 at 11:32 pm
Okai I will post about sticky bit too
September 6th, 2007 at 5:20 am
Hello,
Very useful thanks.
December 6th, 2007 at 3:17 am
is there any command which can restore the file permissions.
i just change permissions to few files & i don’t know the old permissions. any way to undo the chmod operation.
mail at nehra13@gmail.com
January 3rd, 2008 at 7:07 am
I have same trouble.
Pls send reply to
ravi.thakur@barco.com