Penyebab Apache + PHP tidak dapat mengakses-menulis pada file + direktori

Posted by Admin on 28 Maret 2018, 20:34 apache, selinux, centos

SELinux memblokir operasi baca / tulis untuk alasan  keamanan. Anda perlu menentukan file / direktori mana yang dapat melayani file dan file / direktori mana yang dapat digunakan untuk menulis. 

SELinux tampaknya memiliki beberapa aturan / kebijakan yang berlaku untuk file / direktori di atas struktur izin file unix. Ketika saya menjalankan perintah di bawah ini pada folder root, saya melihat informasi lebih lanjut tentang izin file / direktori. 

Oleh karena itu, kita dapat menyimpulkan bahwa kita perlu menentukan izin SELinux yang tepat pada direktori untuk melayani file pada direktori tertentu dan mengatur izin SELinux lain untuk memungkinkan penulisan ke file. 

Sebagai contoh jika ingin melakukan akses menulis dan mengunggah file pada direktori data/www/html/sites/mysite

Pertama, salin file seperti biasa ke /data/www/html/sites/mysite, lalu atur kepemilikan dan izin yang tepat.

# Ownership
sudo chown apache:apache -R /data/www/html/sites/mysite
cd /data/www/html/sites/mysite
 
# File permissions, recursive
find . -type f -exec chmod 0644 {} \;
 
# Dir permissions, recursive
find . -type d -exec chmod 0755 {} \;
 
# SELinux serve files off Apache, resursive
sudo chcon -t httpd_sys_content_t /data/www/html/sites/mysite -R
 
# Allow write only to specific dirs
sudo chcon -t httpd_sys_rw_content_t /data/www/html/sites/mysite/logs -R
sudo chcon -t httpd_sys_rw_content_t /data/www/html/sites/mysite/uploads -R

httpd_sys_content_t- untuk memungkinkan Apache melayani konten ini dan httpd_sys_rw_content_t- untuk memungkinkan Apache menulis ke jalur tersebut.

 

Sumber :

https://blog.lysender.com/2015/07/centos-7-selinux-php-apache-cannot-writeaccess-file-no-matter-what/