Permission file dan folder di Linux menentukan siapa yang boleh membaca, menulis, dan mengeksekusi sebuah file. Salah satu kesalahan umum yang sering terjadi saat pengembangan adalah membiarkan semua file ter-upload ke server dengan permission 777, kondisi yang berbahaya karena membuka akses penuh ke semua user.
Tutorial ini membahas cara memahami sistem permission Linux, mengapa 777 harus dihindari di production, dan cara mengubah permission file dan folder secara massal via terminal menggunakan perintah find dan chmod.
Memahami sistem permission Linux
Setiap file dan folder di Linux memiliki tiga lapisan hak akses yang diterapkan kepada tiga kategori user:
| Kategori | Keterangan |
|---|---|
| Owner | User pemilik file/folder |
| Group | Grup yang memiliki file/folder |
| Other | Semua user lain di luar owner dan group |
Setiap kategori memiliki tiga jenis hak akses:
| Simbol | Hak akses | Nilai oktal |
|---|---|---|
r | Read — membaca isi file atau melihat isi folder | 4 |
w | Write — menulis, mengubah, atau menghapus file | 2 |
x | Execute — menjalankan file sebagai program atau masuk ke dalam folder | 1 |
Permission ditulis dalam tiga digit oktal, masing-masing mewakili Owner, Group, dan Other. Contoh: 755 berarti Owner mendapat rwx (7), sedangkan Group dan Other mendapat r-x (5).
Nilai oktal permission yang umum digunakan
| Nilai | Kalkulasi | Hak akses |
|---|---|---|
7 | 4+2+1 | Read, write, execute |
6 | 4+2 | Read, write |
5 | 4+1 | Read, execute |
4 | 4 | Read only |
3 | 2+1 | Write, execute |
2 | 2 | Write only |
1 | 1 | Execute only |
0 | 0 | Tidak ada akses |
Mengapa permission 777 berbahaya
Permission 777 berarti semua user, owner, group, maupun other memiliki akses penuh: baca, tulis, dan eksekusi. Di lingkungan server production, ini membuka celah keamanan serius:
- Siapapun yang memiliki akses ke server dapat mengubah atau menghapus file aplikasi.
- Penyerang yang berhasil mengeksploitasi celah kecil di aplikasi bisa memanfaatkan permission
777untuk mengeksekusi kode berbahaya. - Pada shared hosting, user lain dalam server yang sama berpotensi mengakses file kamu.
Permission yang direkomendasikan
| Tipe | Permission | Keterangan |
|---|---|---|
| Folder | 755 | Owner bisa baca/tulis/masuk; group & other hanya baca & masuk |
| File biasa | 644 | Owner bisa baca/tulis; group & other hanya baca |
| File konfigurasi sensitif | 600 | Hanya owner yang bisa baca/tulis; yang lain tidak ada akses sama sekali |
| File executable/skrip | 755 | Owner bisa baca/tulis/eksekusi; group & other hanya baca & eksekusi |
Mengubah permission secara massal via terminal
Mengubah permission satu per satu via file manager cPanel sangat tidak efisien untuk folder dengan ratusan file. Cara paling cepat adalah menggunakan kombinasi perintah find dan chmod di terminal (lokal maupun SSH).
Masuk terlebih dahulu ke folder target, misalnya folder simpeg:
cd /path/ke/folder/simpegUbah permission semua folder di dalamnya menjadi 755:
sudo find * -type d -print0 | xargs -0 chmod 0755Ubah permission semua file di dalamnya menjadi 644:
sudo find . -type f -print0 | xargs -0 chmod 0644Penjelasan flag yang digunakan pada kedua perintah di atas:
| Flag/opsi | Keterangan |
|---|---|
-type d | Filter hanya direktori/folder |
-type f | Filter hanya file biasa |
-print0 | Output dipisah karakter null, aman untuk nama file dengan spasi |
xargs -0 | Membaca input berformat null dari find dan meneruskan ke chmod |
chmod 0755 / 0644 | Angka nol di depan menandakan format oktal |
Jika ingin mengubah permission file konfigurasi sensitif seperti config.php menjadi 600 agar hanya owner yang bisa membacanya:
chmod 600 config.phpVerifikasi hasil perubahan
Tampilkan daftar file beserta permission-nya untuk memastikan perubahan berhasil diterapkan:
ls -lOutput akan menampilkan kolom permission di bagian paling kiri, contohnya:
drwxr-xr-x uploads/
-rw-r--r-- index.php
-rw------- config.phpKarakter pertama menunjukkan tipe: d untuk direktori, - untuk file biasa. Tiga karakter berikutnya masing-masing mewakili permission Owner, Group, dan Other dalam format rwx.
Belum familiar dengan perintah dasar Linux? Baca dulu: Kumpulan perintah dasar Linux.




