Setiap «izin ditolak» punya satu jawaban yang benar dan satu yang berbahaya. Yang berbahaya adalah 777: ia selalu berhasil, dan artinya proses apa pun di server itu bisa menulis ulang kode Anda.

Apa arti ketiga angka itu

Pemilik, kelompok, dan semua orang lain. Membaca bernilai 4, menulis 2, menjalankan 1, dan semuanya dijumlahkan: 6 berarti membaca dan menulis, 7 berarti ketiganya.

  • 644 pada sebuah berkas — pemiliknya menulis, semua orang membaca.
  • 755 pada sebuah direktori — pemiliknya menulis, semua orang bisa masuk dan melihat isinya.
  • 600 pada sebuah rahasia — pemiliknya, dan sama sekali tidak ada orang lain.

Apa yang dibutuhkan sebuah situs

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 600 wp-config.php

Direktori butuh bit jalankan agar bisa dimasuki; berkas sama sekali tidak membutuhkannya. Berkas PHP dengan 755 tidak menjadi lebih bisa dijalankan — server web membacanya, bukan menjalankannya sebagai program.

Bagian yang biasanya keliru adalah kepemilikannya

Galatnya sering bukan pada mode, melainkan pada pemiliknya. Kalau PHP berjalan sebagai satu pengguna sementara berkasnya milik pengguna lain, tak ada mode di bawah 777 yang akan menolong — dan perbaikan yang benar adalah pemiliknya.

ps aux | grep php-fpm | head -2
chown -R youruser:youruser /path/to/site
777 pada direktori unggahan ditambah server yang menjalankan PHP di sana: begitulah situs diambil alih. Seseorang mengunggah sebuah berkas lalu meminta server menjalankannya. Unggahan tidak boleh pernah dijalankan.

Hentikan unggahan dari dijalankan

location ~* /uploads/.*\.php$ {
    deny all;
}
Kalau sebuah pengaya bersikeras butuh 777 agar bekerja, itu adalah keterangan tentang pengaya itu. Berilah 775 dengan kelompok yang tepat, lalu bicarakan dengan pembuatnya.