Cara Memeriksa Izin File di Linux: Panduan Lengkap
Linux menggerakkan mayoritas server dunia — dari lingkungan VPS Hosting hingga Dedicated Servers tingkat enterprise — dan ada alasan yang bagus untuk itu. Linux cepat, stabil, dan dibangun dengan keamanan di intinya. Salah satu pilar paling fundamental dari keamanan tersebut adalah sistem izin file: mekanisme yang presisi dan elegan yang mengontrol dengan tepat siapa yang dapat membaca, memodifikasi, atau menjalankan file atau direktori apa pun di sistem.
Baik Anda seorang pengembang yang menerapkan aplikasi web, administrator sistem yang mengamankan server, atau pemula yang mempelajari baris perintah, memahami cara memeriksa dan menafsirkan izin file di Linux adalah keterampilan yang tidak dapat ditawar. Panduan ini mencakup semua yang perlu Anda ketahui — dari dasar-dasar model izin hingga bit khusus tingkat lanjut — dengan perintah praktis dan contoh dunia nyata.
Apa Itu Izin File Linux?
Setiap file dan direktori di Linux memiliki serangkaian izin yang terlampir padanya. Izin ini menentukan tindakan apa yang diizinkan dan oleh siapa. Ada tiga jenis izin inti:
| Izin | Simbol | Apa yang Dilakukannya pada File | Apa yang Dilakukannya pada Direktori |
|---|---|---|---|
| Baca | r | Lihat isi file | Daftar nama file di dalamnya |
| Tulis | w | Modifikasi atau hapus file | Buat atau hapus file di dalamnya |
| Jalankan | x | Jalankan file sebagai program | Masuki (navigasi ke) direktori |
Ketiga izin ini diterapkan secara independen ke tiga kategori pengguna yang berbeda:
- Pemilik (pengguna) — Pengguna yang memiliki file, biasanya pembuatnya.
- Grup — Pengguna apa pun yang termasuk dalam grup file yang ditugaskan.
- Lainnya — Semua orang lain di sistem.
Matriks izin tiga-kali-tiga ini memberikan administrator Linux kontrol yang granular dan kuat atas akses ke setiap sumber daya di sistem.
Cara Memeriksa Izin File: Perintah ls -l
Metode tercepat dan paling umum digunakan untuk memeriksa izin file adalah perintah ls -l (format daftar panjang).
ls -l file.txtContoh output:
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 file.txtMari kita uraikan setiap komponen dari output ini:
- rw- r-- r-- 1 alice developers 1024 Aug 16 12:30 file.txt
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ └─ Filename
│ │ │ │ │ │ │ │ └─ Last modified
│ │ │ │ │ │ │ └─ File size (bytes)
│ │ │ │ │ │ └─ Group name
│ │ │ │ │ └─ Owner name
│ │ │ │ └─ Number of hard links
│ │ │ └─ Others' permissions
│ │ └─ Group's permissions
│ └─ Owner's permissions
└─ File type (- = regular file, d = directory, l = symlink)Jadi -rw-r--r-- memberi tahu kami:
- Pemilik (
alice): Baca + Tulis (rw-) - Grup (
developers): Hanya baca (r--) - Lainnya: Hanya baca (
r--)
Memeriksa Izin untuk Beberapa File
Untuk melihat izin semua file dalam direktori sekaligus:
ls -la /var/www/htmlBendera -a menyertakan file tersembunyi (yang dimulai dengan titik). Ini sangat berguna saat mengaudit direktori server web di lingkungan Shared Web Hosting atau VPS.
Mendapatkan Informasi Izin Terperinci dengan stat
Untuk rincian yang lebih menyeluruh — termasuk representasi simbolis dan numerik — gunakan perintah stat:
stat file.txtContoh output:
File: file.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 131073 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)
Access: 2024-08-16 12:30:00.000000000 +0000
Modify: 2024-08-16 12:30:00.000000000 +0000
Change: 2024-08-16 12:30:00.000000000 +0000Baris kuncinya adalah:
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)Ini memberi Anda:
- Notasi numerik (oktal):
0644 - Notasi simbolis:
-rw-r--r-- - ID Pengguna (UID) dan ID Grup (GID) dengan nama yang dapat dibaca manusia
Perintah stat sangat berharga saat memecahkan masalah kesalahan izin di server produksi, karena memberikan semua konteks yang Anda butuhkan dalam satu output.
Memahami Notasi Izin Numerik (Oktal)
Izin Linux dapat diekspresikan sebagai angka, yang merupakan format yang digunakan oleh perintah seperti chmod. Setiap jenis izin diberi nilai:
| Izin | Nilai Numerik |
|---|---|
Baca (r) | 4 |
Tulis (w) | 2 |
Jalankan (x) | 1 |
Tidak ada izin (-) | 0 |
Anda menghitung nilai izin untuk setiap kategori pengguna dengan menambahkan nilai-nilainya bersama-sama:
| Kombinasi | Perhitungan | Nilai Numerik |
|---|---|---|
rwx | 4 + 2 + 1 | 7 |
rw- | 4 + 2 + 0 | 6 |
r-x | 4 + 0 + 1 | 5 |
r-- | 4 + 0 + 0 | 4 |
--- | 0 + 0 + 0 | 0 |
Angka oktal tiga digit mewakili set izin lengkap:
0644 → Owner: 6 (rw-) | Group: 4 (r--) | Others: 4 (r--)
0755 → Owner: 7 (rwx) | Group: 5 (r-x) | Others: 5 (r-x)
0700 → Owner: 7 (rwx) | Group: 0 (---) | Others: 0 (---)Memeriksa Izin pada Direktori
Direktori menggunakan model izin yang sama, tetapi makna setiap bit sedikit berbeda. Gunakan ls -ld (perhatikan bendera -d) untuk memeriksa direktori itu sendiri daripada isinya:
ls -ld myfolderContoh output:
drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolderd di awal mengkonfirmasi ini adalah direktori. Izin terurai sebagai:
- Pemilik (
alice):rwx— Dapat mendaftar, membuat/menghapus file, dan memasuki direktori - Grup (
developers):r-x— Dapat mendaftar file dan memasuki, tetapi tidak dapat membuat atau menghapus - Lainnya:
---— Tidak ada akses sama sekali
> Penting: Bit jalankan (x) pada direktori berarti kemampuan untuk memasuki direktori (yaitu, menggunakan cd). Tanpa x, pengguna tidak dapat menavigasi ke direktori bahkan jika mereka memiliki izin baca. Ini adalah sumber kebingungan yang umum bagi pendatang baru.
Bit Izin Khusus: setuid, setgid, dan Sticky Bit
Selain sembilan bit izin standar, Linux mendukung tiga bit izin khusus yang menyediakan kontrol akses tingkat lanjut:
1. setuid (s pada bit jalankan pemilik)
Ketika diatur pada file yang dapat dijalankan, program berjalan dengan hak istimewa pemilik file daripada pengguna yang memanggil. Ini adalah cara perintah seperti passwd memungkinkan pengguna biasa untuk memodifikasi /etc/shadow (yang dimiliki oleh root).
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwds di posisi jalankan pemilik menunjukkan setuid.
2. setgid (s pada bit jalankan grup)
Pada file, program berjalan dengan hak istimewa grup. Pada direktori, file baru yang dibuat di dalamnya secara otomatis mewarisi grup direktori — berguna untuk folder proyek bersama.
ls -ld /shared/project
drwxrwsr-x 2 alice developers 4096 Aug 16 12:30 /shared/project3. Sticky Bit (t pada bit jalankan lainnya)
Ketika diatur pada direktori, hanya pemilik file (atau root) yang dapat menghapus atau mengganti nama file di dalamnya, bahkan jika orang lain memiliki izin tulis. Ini adalah konfigurasi standar untuk /tmp:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpt di akhir menandakan sticky bit aktif.
Representasi numerik bit khusus:
| Bit Khusus | Nilai Numerik |
|---|---|
| setuid | 4000 |
| setgid | 2000 |
| Sticky bit | 1000 |
Jadi drwxrwxrwt = 1777 (1000 + 777).
Tabel Referensi Izin Lengkap
| Simbolis | Numerik | Makna pada File | Makna pada Direktori |
|---|---|---|---|
--- | 0 | Tidak ada akses | Tidak ada akses |
--x | 1 | Hanya jalankan | Hanya masuk |
-w- | 2 | Hanya tulis | Modifikasi isi (dengan x) |
-wx | 3 | Tulis + Jalankan | Masuk dan modifikasi |
r-- | 4 | Hanya baca | Daftar nama (memerlukan x untuk berguna) |
r-x | 5 | Baca + Jalankan | Daftar dan masuk |
rw- | 6 | Baca + Tulis | Daftar dan modifikasi (tanpa memasuki) |
rwx | 7 | Akses penuh | Kontrol penuh |
Contoh Izin Dunia Nyata
Berikut adalah pola izin paling umum yang akan Anda temui dalam praktik:
-rw-r--r-- (0644) — File Standar
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txtPemilik dapat membaca dan menulis. Grup dan lainnya hanya dapat membaca. Khas untuk file konfigurasi dan konten web.
-rwxr-xr-x (0755) — Skrip atau Biner yang Dapat Dijalankan
-rwxr-xr-x 1 alice developers 4096 Aug 16 12:30 deploy.shPemilik memiliki akses penuh. Semua orang lain dapat membaca dan menjalankan tetapi tidak dapat memodifikasi. Standar untuk skrip shell, biner server web, dan executable publik.
-rw------- (0600) — File Pribadi
-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsaHanya pemilik yang dapat membaca atau menulis. Tidak ada akses untuk orang lain. Diperlukan untuk kunci pribadi SSH — SSH akan menolak menggunakan file kunci dengan izin yang lebih luas.
drwxr-xr-x (0755) — Direktori Publik Standar
drwxr-xr-x 5 alice developers 4096 Aug 16 12:30 public_htmlUmum untuk direktori root web. Pemilik memiliki kontrol penuh; orang lain dapat menjelajahi dan memasuki.
drwx------ (0700) — Direktori Pribadi
drwx------ 3 alice alice 4096 Aug 16 12:30 .sshSepenuhnya pribadi. Hanya pemilik yang dapat mengakses. Diperlukan untuk direktori ~/.ssh.
drwxrwxrwt (1777) — Dapat Ditulis Dunia dengan Sticky Bit
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpSemua orang dapat membuat file, tetapi hanya pemilik setiap file yang dapat menghapus file mereka sendiri.
Tips Praktis untuk Lingkungan Server
Jika Anda mengelola server Linux — baik itu VPS yang menjalankan aplikasi web, server email yang diamankan dengan Sertifikat SSL, atau mesin yang menghost beberapa domain yang terdaftar melalui Pendaftaran Domain — berikut adalah beberapa praktik terbaik izin penting:
- Jangan pernah atur 777 pada file atau direktori kecuali Anda memiliki alasan yang sangat spesifik dan sementara. File yang dapat ditulis dunia adalah risiko keamanan utama.
- File server web (misalnya
