Cara mengubah permission file & folder secara massal pada Linux

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:

KategoriKeterangan
OwnerUser pemilik file/folder
GroupGrup yang memiliki file/folder
OtherSemua user lain di luar owner dan group

Setiap kategori memiliki tiga jenis hak akses:

SimbolHak aksesNilai oktal
rRead — membaca isi file atau melihat isi folder4
wWrite — menulis, mengubah, atau menghapus file2
xExecute — menjalankan file sebagai program atau masuk ke dalam folder1

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

NilaiKalkulasiHak akses
74+2+1Read, write, execute
64+2Read, write
54+1Read, execute
44Read only
32+1Write, execute
22Write only
11Execute only
00Tidak 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 777 untuk mengeksekusi kode berbahaya.
  • Pada shared hosting, user lain dalam server yang sama berpotensi mengakses file kamu.

Permission yang direkomendasikan

TipePermissionKeterangan
Folder755Owner bisa baca/tulis/masuk; group & other hanya baca & masuk
File biasa644Owner bisa baca/tulis; group & other hanya baca
File konfigurasi sensitif600Hanya owner yang bisa baca/tulis; yang lain tidak ada akses sama sekali
File executable/skrip755Owner 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/simpeg

Ubah permission semua folder di dalamnya menjadi 755:

sudo find * -type d -print0 | xargs -0 chmod 0755

Ubah permission semua file di dalamnya menjadi 644:

sudo find . -type f -print0 | xargs -0 chmod 0644

Penjelasan flag yang digunakan pada kedua perintah di atas:

Flag/opsiKeterangan
-type dFilter hanya direktori/folder
-type fFilter hanya file biasa
-print0Output dipisah karakter null, aman untuk nama file dengan spasi
xargs -0Membaca input berformat null dari find dan meneruskan ke chmod
chmod 0755 / 0644Angka 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.php

Verifikasi hasil perubahan

Tampilkan daftar file beserta permission-nya untuk memastikan perubahan berhasil diterapkan:

ls -l

Output akan menampilkan kolom permission di bagian paling kiri, contohnya:

drwxr-xr-x  uploads/
-rw-r--r--  index.php
-rw-------  config.php

Karakter 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.