Chmod +rwx Command on Linux Systems. (Permissions)
In Linux and Unix-like (UN*X) operating systems, a set of flags associated with each file determines who can access that file, and how they can access it. These flags are called file permissions or modes, as in "mode of access."
The command name chmod
stands for "change mode." It restricts the way a file can be accessed. In Linux, access to the files is managed through the file permissions, attributes, and ownership. This ensures that only authorized users and processes can access files and directories. That makes chmod
command one of the most powerful and important commands in Linux.
Understanding File Permissions
On a Linux system, each file and directory is assigned access rights for:
- The file owner.
- The group members.
- Others (everybody else).
and three file permissions types apply to each class:
- The read permission.
- The write permission.
- The execute permission. (i.e. run the file as a program).
This allows you to specify which users are allowed to read the file, write to the file, or execute the file.
File permissions can be viewed using the ls
command:
$ ls -l monkey.txt
Output
-rw-r--r-- 12 snubmonkey batman 24.0K Feb 12 08:28 monkey.txt
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group
| | | | | +-------------------> 6. Owner
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions
| | +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type:
- indicates regular file
d indicates directory
In our above example (rw-r--r--
) means that the file owner has read and write permissions (rw-
), the group and others have only read permissions (r--
).
The first character identifies the type of entry that is being listed. If it is a dash (-
) it is a file. If it is the letter d
it is a directory.
The next nine characters represent the settings for the three sets of permissions.
- The first three characters show the permissions for the user who owns the file (user permissions).
- The middle three characters show the permissions for members of the file’s group (group permissions).
- The last three characters show the permissions for anyone not in the first two categories (other permissions).
There are two ways to represent these permissions: with symbols (Alphanumeric characters), or with Octal numbers (the digits 0 through 7).
Symbolic (Text) Method #
In the symbolic mode, you can modify the permissions of a specific owner. It makes use of mathematical symbols to modify the Unix file permissions.
Operator Description
+ Adds a permission to a file or directory
- Removes the permission
= Sets the permission and overrides the permissions set earlier.
The various owners are represented as -
User Denotations
u user/owner
g group
o other
a all
Now, let's look into an example so we can have a better understanding.
$ ls -l monkey.txt
-rw-r--r-- 12 snubmonkey batman 24.0K Feb 12 09:22 monkey.txt
*let's set permissions to the 'other' users.
$ chmod o=rwx monkey.txt
ls -l
-rw-r--rwx 12 snubmonkey batman 24.0K Feb 12 09:24 monkey.txt
*let's set an execute permission to the usergroup.
$ chmod g+x monkey.txt
ls -l
-rw-r-x-rwx 12 snubmonkey batman 24.0K Feb 12 09:27 monkey.txt
*let's remove 'read' permission for 'user'.
$ chmod u-r monkey.txt
ls -l
--w-r-x-rwx 12 snubmonkey batman 24.0K Feb 12 09:29 monkey.txt
*let's Remove the read, write, and execute permission for all users except the file’s owner:
$ chmod og-rwx monkey.txt
ls -l
--w------- 12 snubmonkey batman 24.0K Feb 12 09:31 monkey.txt
*let's add the file’s owner permissions to the permissions that the members of the file’s group have
$ chmod g+u monkey.txt
ls -l
--w--w---- 12 snubmonkey batman 24.0K Feb 12 09:34 monkey.txt
Octal (numbers) Method #
Simply put, in this mode, file permissions are not represented as characters but as a three-digit octal number.
The table below gives numbers for all permissions types.
Number Permission Type Symbol
0 No Permission ---
1 Excetute --x
2 Write -w-
3 Excetue + Write -wx-
4 Read r--
5 Read + Excecute r-x
6 Read + Write rw-
7 Read + Write + Excecute rwx
*let's check the current file and the chmod
permissions command in action.
ls -l
--w--w---- 12 snubmonkey batman 24.0K Feb 12 09:44 monkey.txt
*let's chmod 764
and check permissions again.
chmod 764 monkey.txt
-rwxrw-r-- 12 snubmonkey batman 24.0K Feb 12 09:46 monkey.txt
'764' octal code says the following:
- Owner can read, write and execute
- Usergroup can read and write
- World can only read
This is shown as '-rwxrw-r--'
Recursively Change the File’s Permissions
To recursively operate on all files and directories under the given directory, use the -R
(--recursive
) option:
For example, to change the permissions of all files and subdirectories under the /var/www
directory to 755
you would use:
chmod -R 755 /var/www
This is how you can change user permissions in Linux on file by assigning a Symbolic value or an octal number.
Thank you for reading and hope you've learned something.
To learn more about chmod
type man chmod
in terminal.