Cyber RoadmapINDONESIA

Fondasi · Fase 1

Izin File di Linux: rwx, Notasi Angka, SUID, SGID, dan Sticky Bit

Siapa boleh membaca, mengubah, dan menjalankan file ini? Pelajari cara membaca izin rwx, beda artinya pada file dan folder, notasi angka dan huruf pada chmod, umask, serta izin khusus SUID, SGID, dan sticky bit yang sering dimanfaatkan untuk privilege escalation.

Di artikel navigasi terminal, kamu sudah berkenalan singkat dengan chmod dan cara menghitung izin dengan angka. Sekarang kita masuk lebih dalam. Izin file adalah salah satu lapisan pertahanan paling dasar di Linux, dan juga salah satu sumber celah yang paling sering ditemukan saat audit maupun serangan.

Pertanyaannya sederhana: siapa boleh melakukan apa terhadap file ini? Jawabannya tersimpan dalam sepuluh karakter kecil yang muncul setiap kali kamu menjalankan ls -l. Di artikel ini kamu akan belajar membacanya dengan lancar, mengubahnya dengan dua cara penulisan, dan mengenali izin khusus SUID, SGID, dan sticky bit.

Membaca sepuluh karakter izin

$ ls -l
-rw-r--r-- 1 budi dev  1200 Nov  4 10:00 laporan.txt
drwxr-x--- 2 budi dev  4096 Nov  4 10:05 proyek

Karakter pertama menunjukkan jenis: - untuk file biasa, d untuk folder, dan l untuk link. Sembilan karakter sesudahnya dibagi menjadi tiga kelompok berisi tiga huruf:

Membaca izin -rw-r--r--
BagianKarakterUntuk siapaArtinya
Jenis--File biasa
Kelompok 1rw-Pemilik (user)Boleh membaca dan mengubah
Kelompok 2r--Grup (group)Hanya boleh membaca
Kelompok 3r--Lainnya (other)Hanya boleh membaca

Linux memeriksa kelompok ini secara berurutan. Kalau kamu pemilik file, yang berlaku hanya izin pemilik. Kalau bukan pemilik tapi anggota grupnya, yang berlaku izin grup. Selain itu, berlaku izin "lainnya".

rwx pada file dan folder

Banyak pemula mengira huruf r, w, dan x artinya selalu sama. Padahal pada folder, artinya berbeda.

Perbandingan arti izin r, w, dan x pada file dan pada folder
Perbandingan arti izin r, w, dan x pada file dan pada folder

Perhatikan izin w pada folder. Siapa pun yang punya izin tulis di sebuah folder bisa menghapus atau mengganti nama file di dalamnya, termasuk file milik orang lain, walaupun ia tidak punya izin terhadap file itu sendiri. Inilah alasan folder dengan izin tulis untuk semua orang sangat berbahaya, kecuali dilindungi sticky bit yang akan kita bahas nanti.

Dua cara menulis izin

Notasi angka

Seperti di artikel sebelumnya, setiap huruf punya nilai: r = 4, w = 2, x = 1. Jumlahkan untuk setiap kelompok, lalu tulis tiga angka untuk pemilik, grup, dan lainnya.

Nilai angka untuk setiap kombinasi izin
AngkaHurufArtinya
0---Tidak ada izin
1--xHanya jalankan
2-w-Hanya ubah
3-wxUbah dan jalankan
4r--Hanya baca
5r-xBaca dan jalankan
6rw-Baca dan ubah
7rwxSemua izin

Notasi angka cocok untuk menetapkan izin secara utuh, misalnya chmod 640 laporan.txt.

Notasi huruf

Kalau kamu hanya ingin mengubah sebagian izin tanpa menghitung ulang semuanya, notasi huruf lebih praktis.

Notasi huruf chmod: siapa (u, g, o, a), operasi (tambah, kurangi, tetapkan), dan izin (r, w, x), dengan contoh chmod u+x dan chmod g-w,o=
Notasi huruf chmod: siapa (u, g, o, a), operasi (tambah, kurangi, tetapkan), dan izin (r, w, x), dengan contoh chmod u+x dan chmod g-w,o=
chmod u+x skrip.sh          # pemilik boleh menjalankan
chmod go-w laporan.txt      # grup dan lainnya tidak boleh mengubah
chmod o= rahasia.txt        # hapus semua izin untuk orang lain
chmod -R g+rX proyek        # grup boleh membaca seluruh isi folder proyek

Pada contoh terakhir, opsi -R berarti berlaku untuk semua isi folder. Huruf X besar artinya izin jalankan hanya ditambahkan pada folder dan file yang memang sudah bisa dijalankan, sehingga file dokumen biasa tidak ikut menjadi "program".

umask: izin bawaan file baru

Saat kamu membuat file baru, izinnya tidak muncul begitu saja. Linux memakai umask, yaitu "topeng" yang mengurangi izin maksimum. Cek dengan perintah umask. Nilai yang umum adalah 022, sehingga file baru mendapat izin 644 dan folder baru 755. Beberapa distro memakai 002 untuk pengguna biasa, sehingga grup juga boleh mengubah.

Tiga izin khusus: SUID, SGID, dan sticky bit

Selain rwx, ada tiga izin khusus. Izin ini ditandai huruf s atau t menggantikan posisi x, dan ditulis sebagai angka keempat di depan notasi angka.

Tiga izin khusus: SUID bernilai 4 seperti pada /usr/bin/passwd, SGID bernilai 2 untuk folder kerja bersama, dan sticky bit bernilai 1 seperti pada /tmp
Tiga izin khusus: SUID bernilai 4 seperti pada /usr/bin/passwd, SGID bernilai 2 untuk folder kerja bersama, dan sticky bit bernilai 1 seperti pada /tmp

Contoh paling terkenal adalah /usr/bin/passwd. Password tersimpan di /etc/shadow yang hanya bisa diubah root, seperti yang kamu pelajari di materi user management. Lalu bagaimana pengguna biasa bisa mengganti password-nya sendiri? Karena program passwd memiliki SUID: saat dijalankan siapa pun, program itu berjalan dengan hak pemiliknya, yaitu root. Program ini dirancang hati-hati agar hanya mengizinkan pengguna mengganti password miliknya sendiri.

ls -l /usr/bin/passwd        # perhatikan huruf s pada posisi x pemilik
ls -ld /tmp                  # perhatikan huruf t di posisi terakhir
chmod 2775 folder-tim        # aktifkan SGID pada folder kerja bersama
chmod u+s program            # aktifkan SUID dengan notasi huruf
chmod +t folder-umum         # aktifkan sticky bit

Kenapa SUID diincar penyerang

SUID ibarat kartu akses yang dipinjamkan sementara. Kalau programnya aman, tidak masalah. Tapi kalau program ber-SUID root bisa disuruh melakukan hal lain, misalnya membuka shell, membaca file sembarang, atau menjalankan perintah, maka pengguna biasa bisa ikut mendapat hak root. Teknik ini disebut privilege escalation (menaikkan hak akses).

Karena itu, salah satu langkah pertama pentester setelah berhasil masuk ke server adalah mencari file SUID, dan langkah yang sama juga dilakukan auditor untuk menutup celahnya.

find / -perm -4000 -type f 2>/dev/null     # semua file SUID
find / -perm -2000 -type f 2>/dev/null     # semua file SGID
find / -perm -0002 -type d ! -perm -1000 2>/dev/null   # folder bisa ditulis semua orang, tanpa sticky bit
Temuan izin yang perlu diwaspadai saat audit
TemuanKenapa berbahayaPerbaikan
Program ber-SUID root yang tidak dikenal atau baru munculBisa jadi pintu belakang yang ditanam penyerangSelidiki asal-usulnya, lalu cabut dengan chmod u-s atau hapus
Editor, interpreter, atau alat seperti find diberi SUIDBisa dimanfaatkan untuk menjalankan perintah sebagai rootCabut SUID-nya
File konfigurasi atau skrip milik root yang bisa ditulis semua orangPenyerang bisa menyisipkan perintah yang nanti dijalankan rootUbah menjadi 644 atau 755, pemilik root
Folder bisa ditulis semua orang tanpa sticky bitFile orang lain bisa dihapus atau digantiTambahkan sticky bit atau kurangi izin tulisnya
File rahasia seperti kunci SSH bisa dibaca grup atau lainnyaKunci bisa dicuri pengguna lainUbah menjadi 600

Kenapa ini penting untuk keamanan siber

Izin file yang salah adalah salah satu temuan paling umum dalam audit server, dan salah satu jalan paling umum yang dipakai penyerang untuk naik dari pengguna biasa menjadi root. Contohnya kunci SSH yang bisa dibaca semua orang, skrip backup milik root yang bisa diubah siapa saja, atau program SUID yang tidak seharusnya ada. Kalau kamu bisa membaca izin dengan lancar dan tahu apa yang perlu dicurigai, kamu sudah bisa menemukan banyak celah sebelum penyerang menemukannya.

Ringkasan

  • Izin dibaca dalam tiga kelompok: pemilik, grup, dan lainnya, masing-masing dengan r, w, dan x.
  • Pada folder, r berarti melihat daftar isi, w berarti membuat dan menghapus file di dalamnya, dan x berarti bisa masuk.
  • Notasi angka (chmod 640) cocok untuk menetapkan izin utuh, notasi huruf (chmod g-w) cocok untuk perubahan kecil.
  • umask menentukan izin bawaan file dan folder baru.
  • SUID (4) menjalankan program dengan hak pemiliknya, SGID (2) dengan hak grupnya, dan sticky bit (1) melindungi file di folder bersama.
  • Program SUID yang tidak semestinya adalah jalan umum privilege escalation. Periksa secara berkala dengan find.

Tonton dan baca juga

Dengan materi ini, kamu menyelesaikan modul Sistem Operasi Linux. Modul berikutnya membahas jaringan komputer, dimulai dari model OSI 7 layer: fungsi setiap lapisan dan contoh protokolnya. Buka di roadmap untuk melanjutkan.

Bermanfaat? Dukung konten berikutnya

Semua materi di sini gratis. Dukunganmu dipakai untuk membeli alat lab untuk praktik, eksplorasi, dan riset konten keamanan siber berikutnya.

Traktir di Trakteer ↗
Sampul course Cyber Security Fundamental

Pelajari lebih dalam

Cyber Security Fundamental di WPU Course

Lihat course ↗

Materi terkait di roadmap

Artikel lainnya

Artikel ini bersifat edukatif. Praktikkan teknik ofensif hanya di lingkungan yang kamu miliki izinnya. Baca Disclaimer.