Skip to main content

Linux File Permissions

In Linux, every file and directory has permissions that determine who can read, write, or execute the file. Each file or directory has three levels of ownership:

  • User owner (u).
  • Group owner (g).
  • Others (o).

Each ownership level can be assigned the following permissions:

  • Read (r).
  • Write (w).
  • Execute (x).

How to check permissions

Use the following command:

ls -l

Sample output:

-rwxr-xr--  1 user1 admin  1234 Jul  2 08:00 script.sh

Explanation of the first column -rwxr-xr--:

CharacterMeaning
-Type: - (regular file), d (directory), l (symlink), etc
rwxOwner: read, write, execute
r-xGroup: read, no write, execute
r--Others: read only

You can also use the stat command as follows with more complete results:

stat anaconda-ks.cfg 

Sample output:

  File: anaconda-ks.cfg
Size: 1326 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33575044 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2025-06-28 01:09:22.473000000 +0700
Modify: 2025-06-28 01:09:22.606000000 +0700
Change: 2025-06-28 01:09:22.606000000 +0700
Birth: 2025-06-28 01:09:22.473000000 +0700

How to Change Permissions

Using Symbols

Add execute permission to the user (owner).

chmod u+x script.sh

Symbols:

  • u = user (owner)

  • g = group

  • o = others

  • a = all (u+g+o)

Operation:

  • + = tambah izin

  • - = hapus izin

  • = = set izin secara eksplisit

Sample:

chmod g-w file.txt     # Clear group write permissions
chmod o=rx file.txt # Set others can only read and execute

Using Numeric

Format: chmod XYZ nama_file Each category (user, group, other) is represented by 1 digit:

NumbersPermissions
0---
1--x
2-w-
3-wx
4r--
5r-x
6rw-
7rwx

Sample:

chmod 755 script.sh   # rwx for user, rx for group & others
chmod 644 file.txt # rw- for user, r-- for group & others

Change Owner and Group

Change the owner of the file:

chown username file.txt

Change the owner of files and groups:

chown user:group file.txt

Change only the group;

chgrp groupname file.txt

Default Permission

Directories usually use 755

chmod 755 /var/www

Files using 644

chmod 644 file.txt

The following permissions are commonly used:

PurposeMeaning
Scripts can only be run by the ownerchmod 700 script.sh
The file can be read by all, but only the owner can editchmod 644 file.txt
Directory accessible to everyone, only owner can change contentschmod 755 /data/public
Script .sh must executechmod +x script.sh