Lewati ke isi

Server & Infrastruktur

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.

Terbit 5 menit baca

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
  1. Membaca hasil ls -l
  2. Apa arti angka 644 dan 755?
  3. Mengubah izin dengan chmod
  4. Mengganti pemilik dengan chown
  5. Izin khusus yang sesekali kamu temui
  6. Ringkasan

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.

AngkaSimbolArtinyaDipakai untuk
644rw-r--r--Pemilik baca-tulis, lainnya hanya bacaFile website biasa (PHP, HTML, gambar)
755rwxr-xr-xPemilik penuh, lainnya baca dan masukFolder, skrip yang boleh dijalankan semua
600rw-------Hanya pemilik baca-tulisFile rahasia: .env, kunci SSH, wp-config.php di server pribadi
700rwx------Hanya pemilik yang bisa masukFolder .ssh, folder pribadi
640rw-r-----Pemilik baca-tulis, grup baca, lainnya tidakConfig yang perlu dibaca grup web server
777rwxrwxrwxSemua akun boleh apa sajaHindari

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.

Baca juga