Memahami Permission Linux chmod dan chown Tanpa Bingung
Cara membaca rwx dan angka 644 atau 755, kapan memakai chmod dan chown, serta pengaturan aman untuk folder website tanpa 777.
Jawaban singkat
Permission Linux mengatur siapa (pemilik, grup, lainnya) boleh membaca, menulis, dan menjalankan file. chmod mengubah izinnya, chown mengubah pemiliknya. Untuk website, umumnya folder 755, file 644, file rahasia 600, dan jangan pakai 777.
Daftar isi
Kamu baru mengunggah website ke server, lalu yang muncul hanya "403 Forbidden". Atau sebaliknya, plugin gagal menyimpan file dan forum menyarankan chmod -R 777. Masalah semacam ini hampir selalu bermuara pada dua hal: siapa pemilik file, dan izin apa yang diberikan.
Intinya sederhana. Setiap file di Linux punya satu pemilik, satu grup, dan tiga jenis izin: baca, tulis, jalankan. chmod mengubah izin, chown mengubah pemilik. Begitu kamu bisa membaca keduanya dari hasil ls -l, sebagian besar error permission bisa diselesaikan tanpa menebak.
Membaca hasil ls -l
Jalankan ls -l di sebuah folder, dan kamu akan melihat baris seperti ini:
-rw-r--r-- 1 www-data www-data 5120 Nov 10 08:00 index.php
drwxr-xr-x 3 www-data www-data 4096 Nov 10 08:00 uploads
Sepuluh karakter pertama adalah kuncinya. Karakter pertama menunjukkan jenis: - untuk file biasa, d untuk folder, l untuk tautan. Sembilan karakter sisanya dibagi tiga kelompok:
- Tiga pertama untuk pemilik (user).
- Tiga kedua untuk grup.
- Tiga terakhir untuk lainnya (others), yaitu semua akun selain pemilik dan anggota grup.
Di setiap kelompok, r berarti boleh membaca, w boleh menulis, x boleh menjalankan, dan - berarti tidak boleh. Dua kolom setelah angka tautan adalah nama pemilik dan nama grup. Pada contoh di atas, index.php bisa dibaca dan ditulis oleh www-data, sedangkan yang lain hanya bisa membaca.
Untuk folder, artinya sedikit berbeda. r berarti boleh melihat daftar isi, w boleh membuat, menghapus, atau mengganti nama file di dalamnya, dan x berarti boleh masuk ke folder itu. Folder tanpa x tidak bisa dibuka walau isinya punya izin baca. Inilah penyebab umum error 403 di website.
Apa arti angka 644 dan 755?
Izin juga bisa ditulis sebagai angka. Setiap huruf punya nilai: r = 4, w = 2, x = 1. Jumlahkan per kelompok, dan kamu mendapat tiga digit. Contohnya rwx = 7, rw- = 6, r-x = 5, r-- = 4.
| Angka | Simbol | Artinya | Dipakai untuk |
|---|---|---|---|
| 644 | rw-r--r-- | Pemilik baca-tulis, lainnya hanya baca | File website biasa (PHP, HTML, gambar) |
| 755 | rwxr-xr-x | Pemilik penuh, lainnya baca dan masuk | Folder, skrip yang boleh dijalankan semua |
| 600 | rw------- | Hanya pemilik baca-tulis | File rahasia: .env, kunci SSH, wp-config.php di server pribadi |
| 700 | rwx------ | Hanya pemilik yang bisa masuk | Folder .ssh, folder pribadi |
| 640 | rw-r----- | Pemilik baca-tulis, grup baca, lainnya tidak | Config yang perlu dibaca grup web server |
| 777 | rwxrwxrwx | Semua akun boleh apa saja | Hindari |
Kenapa 777 berbahaya? Karena setiap akun di server, termasuk proses web yang berhasil dibobol lewat celah plugin, bisa mengubah atau menyisipkan kode ke file tersebut. 777 memang "menyelesaikan" error, tetapi dengan membuka pintu untuk semua orang. Biasanya masalah aslinya adalah pemilik file yang salah, dan itu urusan chown.
Mengubah izin dengan chmod
Ada dua cara menulis chmod. Cara angka mengganti seluruh izin sekaligus:
chmod 644 index.php
chmod 600 .env
Cara simbol mengubah sebagian saja, berguna bila kamu tidak ingin menyentuh izin lain. u adalah pemilik, g grup, o lainnya, a semuanya:
chmod u+x deploy.sh # beri izin jalankan untuk pemilik
chmod g-w laporan.csv # cabut izin tulis dari grup
chmod o= rahasia.txt # kosongkan semua izin untuk lainnya
Opsi -R menerapkan perubahan ke seluruh isi folder. Hati-hati, karena chmod -R 644 pada folder akan menghapus x dari subfolder sehingga tidak bisa dimasuki. Untuk folder website, lebih aman membedakan folder dan file dengan find:
find /var/www/situsku -type d -exec chmod 755 {} +
find /var/www/situsku -type f -exec chmod 644 {} +
File baru yang dibuat juga punya izin bawaan yang ditentukan oleh umask. Nilai umum 022 menghasilkan file 644 dan folder 755. Kamu jarang perlu mengubahnya, tetapi ini menjelaskan kenapa file hasil unggah langsung punya izin tertentu.
Mengganti pemilik dengan chown
chown mengubah pemilik dan grup sebuah file. Perintah ini butuh sudo, karena user biasa tidak boleh memberikan file ke orang lain:
sudo chown budi laporan.csv # ganti pemilik saja
sudo chown budi:tim laporan.csv # ganti pemilik dan grup
sudo chown :tim laporan.csv # ganti grup saja
sudo chown -R www-data:www-data /var/www/situsku
Siapa pemilik yang tepat untuk website? Proses web server berjalan dengan user khusus: www-data di Ubuntu dan Debian, nginx atau apache di AlmaLinux. PHP-FPM biasanya memakai user yang sama, kecuali kamu mengaturnya per situs. Bila aplikasi harus menulis ke folder tertentu (misalnya uploads atau storage), folder itu harus bisa ditulis oleh user tersebut.
Pola yang lebih rapi untuk server dengan admin manusia: file dimiliki oleh akun admin (misalnya budi), grupnya www-data, izin 644 atau 640 untuk file dan 755 atau 750 untuk folder. Hanya folder yang memang harus ditulis aplikasi yang diberi izin tulis untuk grup. Dengan begitu, proses web yang dibobol tidak bisa mengubah kode aplikasimu. Cara membuat akun admin seperti itu ada di membuat user baru dan akses sudo.
Izin khusus yang sesekali kamu temui
Kadang ls -l menampilkan huruf s atau t di posisi x. Itu izin khusus. Setuid (s di kelompok pemilik) membuat program berjalan dengan hak pemiliknya, contohnya /usr/bin/passwd. Setgid pada folder (s di kelompok grup) membuat file baru di dalamnya otomatis mengikuti grup folder, berguna untuk folder kerja bersama tim. Sticky bit (t di kelompok lainnya) membuat file di folder bersama hanya bisa dihapus pemiliknya, dan inilah yang membuat /tmp aman dipakai semua akun walau izinnya 1777.
Jangan memberi setuid pada skrip atau program buatan sendiri tanpa alasan kuat, karena celah kecil di program itu bisa menjadi jalan menuju root. Pemahaman tentang lokasi file sistem dan siapa pemiliknya akan makin mudah bila kamu sudah mengenal struktur folder Linux.
Ringkasan
Baca dulu hasil ls -l sebelum mengubah apa pun: siapa pemiliknya, apa grupnya, dan izin apa yang dimiliki tiap kelompok. Gunakan chown saat pemiliknya salah dan chmod saat izinnya terlalu longgar atau terlalu ketat. Untuk website, pegangan aman adalah folder 755, file 644, file rahasia 600, dan izin tulis hanya untuk folder yang benar-benar membutuhkannya, bukan 777.


