TDCTF Academy Logo TDCTF ACADEMY

Permission (Izin File)

Model Permission UNIX

Setiap file dan direktori di Linux memiliki tiga set izin untuk tiga kategori:

Kategori Simbol Deskripsi
User (owner) u Pemilik file
Group g Anggota group pemilik
Others o Semua user lain

Setiap kategori memiliki tiga jenis izin:

Izin File Direktori
r (read) Membaca isi file List isi direktori (ls)
w (write) Memodifikasi file Membuat/hapus file di direktori
x (execute) Menjalankan file Masuk ke direktori (cd)

Format ls -l:

-rwxr-xr-- 1 alice developers 2048 Jul 21 10:00 script.sh
Bagian Makna
- Tipe file (-=file, d=dir, l=link)
rwx Owner: read+write+execute
r-x Group: read+execute
r-- Others: read-only

chmod - Change Mode

Mode Numeric (Octal):

Nilai Izin
4 read
2 write
1 execute
7 (4+2+1) rwx
6 (4+2) rw-
5 (4+1) r-x
chmod 755 script.sh # rwxr-xr-x - owner full, group/other read+execute
chmod 644 file.txt # rw-r--r-- - owner read+write, group/other read
chmod 700 private/ # rwx------ - hanya owner
chmod 600 .ssh/id_rsa # rw------- - hanya owner (wajib untuk SSH key)

Mode Symbolic:

chmod u+x script.sh # Tambah execute untuk owner
chmod g-w file.txt # Hapus write untuk group
chmod o=r private.txt # Set others menjadi read-only
chmod a+x script.sh # Tambah execute untuk semua (ugo)
chmod u=rwx,g=rx,o= script.sh # Sama dengan 750

chown dan chgrp

sudo chown alice:developers file.txt # Ubah owner dan group
sudo chown alice file.txt # Ubah owner saja
sudo chown :developers file.txt # Ubah group saja
sudo chown -R alice:www-data /var/www # Rekursif untuk direktori

chgrp adalah alternatif khusus untuk mengubah group:

sudo chgrp www-data /var/www/html

umask - Default Permission

umask menentukan izin default saat file atau direktori dibuat. umask adalah nilai yang dikurangkan dari base permission.

Base File Direktori
Full 666 (rw-rw-rw-) 777 (rwxrwxrwx)

Rumus: default = base & ~umask

umask # Lihat umask saat ini (biasanya 022)
umask 077 # Set umask ketat: file 600, direktori 700

Contoh umask umum:

umask File Direktori Penggunaan
022 644 (rw-r--r--) 755 (rwxr-xr-x) Default umum
027 640 (rw-r-----) 750 (rwxr-x---) Web server
077 600 (rw-------) 700 (rwx------) Privat ketat

Special Permissions

SUID (4xxx) - Set User ID

File dijalankan dengan hak pemilik file, bukan user yang menjalankan.

chmod u+s executable # Symbolic: 4755
chmod 4755 executable # Numeric

Contoh: /usr/bin/passwd memiliki SUID root agar user biasa bisa mengubah password di /etc/shadow.

SGID (2xxx) - Set Group ID

  • File: dijalankan dengan hak group pemilik file.
  • Direktori: file baru di dalamnya mewarisi group direktori, bukan group user.
chmod g+s directory # Symbolic: 2755
chmod 2755 directory

SGID pada direktori sangat berguna untuk shared directory.

Sticky Bit (1xxx)

Hanya pemilik file, pemilik direktori, atau root yang bisa menghapus file - meskipun direktori memiliki write permission untuk semua.

chmod +t /tmp # Symbolic: 1777
chmod 1777 /tmp

Contoh: /tmp memiliki sticky bit (drwxrwxrwt).

Kombinasi:

chmod 6755 script.sh # SUID + SGID + rwxr-xr-x
chmod 1777 /shared # Sticky bit + full access

Permission Checking Order

Saat user mengakses file, kernel memeriksa izin dalam urutan berikut:

  1. Jika UID user = UID file owner → gunakan izin owner (u). Jika tidak cukup → denied.
  2. Jika user adalah anggota group → gunakan izin group (g). Jika tidak cukup → denied.
  3. Gunakan izin others (o).

Konsekuensi: jika owner sebuah file tidak memiliki izin execute (rw-------), maka owner tetap tidak bisa mengeksekusi file tersebut meskipun group atau others punya izin execute. Urutan pemeriksaan berhenti di langkah pertama.

Untuk direktori: izin x (execute) diperlukan untuk bisa cd ke direktori dan mengakses file di dalamnya. Izin r tanpa x hanya bisa melihat daftar file tanpa bisa masuk.

PADA HALAMAN INI