CHMOD

The chmod command is used to change file and directory permissions in Linux and Unix-based systems. Permissions can be specified using either numeric (octal) or symbolic (letter) notation.

Numeric (Octal) Notation

Each permission is represented by a number:

4 = Read (r)
2 = Write (w)
1 = Execute (x)

The values are added together for each user category:

Owner
Group
Others

Example: chmod 755 script.sh

This results in:

Owner: rwx (7 = 4+2+1)
Group: r-x (5 = 4+1)
Others: r-x (5 = 4+1)

Symbolic (Letter) Notation

Permissions can also be modified using letters:

u = User (owner)
g = Group
o = Others
a = All users

Operators:

+ = Add permission
- = Remove permission
= = Set exact permission

Examples:

chmod u+x script.sh      # Add execute permission for the owner
chmod g-w file.txt       # Remove write permission from the group
chmod a=r file.txt       # Set read-only permission for everyone

Both notations achieve the same result. Numeric notation is commonly used for setting complete permission sets, while symbolic notation is useful for modifying specific permissions.

Special Bits

Bit Octal Letter on file on directory
Setuid 4 u+s program runs with uid of file ---
Setgid 2 g+s program runs with gid of file directory passes group of directory to new files/directories beneath
Sticky 1 +t --- the files within the directory are only deletable and renamable from owner of directory or file

example:

3770  Setgid + Sticky-Bit + rwx for user, rwx for group and none for other
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9