Linux/UNIX Permissions
[top] Example
A) ---------- : file with all access denied
B) drwxrwxrwx : directory with all access allowed
C) ----------
1234567890
Example A shows a file's permissions with all access denied.Example B shows a directory's permission with all access allowed
Example C lays out each bit with a number underneath for reference in the following descriptions.
[top] File type codes (bit 1)
- - normal file
d - directory
l - symbolic link
p - named pipe
s - socket
b - block device
c - character device
The first permission bit of a file is represented with one of the above characters and designates the inode type.
[top] Permission codes (bits 2-10)
r = 4 (read)
w = 2 (write)
x = 1 (execute)
- = 0 (no permissions)
Each permission type is assigned a value 4, 2, 1 or 0
[top] Permission groupings
user : -rwx------ (bits 2-4)
group : ----rwx--- (bits 5-7)
other : -------rwx (bits 8-10)
The first permission bit (indicated by 1) is represented with one of the above characters and designates the inode type.
[top] SUID (bit 4)
s - suid code w/ user execute permissions
-rwsrwxrwx
S - suid code w/o user execute permissions
-rwSrwxrwx
Sometimes it necessary to run a program as the owner of the program. Setting the SUID gives the ability to setup
a program to be run as if the owner were running it. A lower case "s" indicates that the owner has executable permissions as well.
An uppercase "S" implies the the user does not have executable permissions.
[top] SGID (bit 7)
s - sgid code w/ group execute permissions
-rwxrwsrwx
S - sgid code w/o group execute permissions
-rwxrwSrwx
Sometimes it necessary to run a program as the group who owns the program. Setting the SGID gives the ability to setup
a program to be run as if the group owner were running it. A lower case "s" indicates that the group has executable permissions as well.
An uppercase "S" implies the the group does not have executable permissions.
[top] Sticky Bit (bit 10)
t/T - sticky bit
-rwxrwxrwt
-rwxrwxrwT
The first permission bit (indicated by 1) is represented with one of the above characters and designates the inode type.
[top] Permission assignments (bits 2-10)
r = 4 (read)
w = 2 (write)
x = 1 (execute)
- = 0 (no permissions)
Each permission type is assigned a value 4, 2, 1 or 0
[top] Change permissions
chmod 777 file1 OR chmod ugo+rwx file1
Here are two different ways to perform the same permission change.
find ./ -user steved -type f -print | xargs chmod 666
find ./ -user steved -type d -print -exec chmod 666 {} \;
These commands find all of the files, in the present working directory, owned by steved and changes their permissions to 666. Both commands do the same thing.
find ./ -user steved -type d -print | xargs chmod 777
find ./ -user steved -type d -print -exec chmod 777 {} \;
These commands find all of the directories, in the present working directory, owned by steved and changes their permissions to 777. Both commands do the same thing.
[top] Change ownership
chown steved file1
This command changes ownership of the file "file1" to steved.
find ./ -user root | xargs chown steved
This command finds all of the nodes, in the present working directory, owned by root and changes their ownership to the user steved.
Cheatsheets






