Perusahaan kami memiliki server web dengan CentOS 7 dan pelanggan kami mengelola situs web mereka melalui FTP (vsftpd). SELinux dalam mode menegakkan.
Masalahnya adalah bahwa data yang dibuat / unggah melalui VSFTPD tidak mewarisi konteks SELinux yang sesuai. Biarkan saya jelaskan.
Misalnya, untuk situs WordPress yang dimiliki server, di luar kotak, sudah ada beberapa aturan yang dapat dilihat menggunakan semanage fcontext -l |grep '/var/www'
, yaitu:
/var/www/html(/.*)?/uploads(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0
/var/www/html(/.*)?/wp-content(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0
Jadi, ketika saya menyalin situs WordPress katakanlah dari server lain ke direktori /var/www/html/
oleh SSH, folder wp-content/
dan wp-content/uploads/
memiliki httpd_sys_rw_content_t
konteks keamanan yang tepat . NAMUN, ketika folder-folder itu dibuat melalui FTP, konteksnya adalah httpd_sys_content_t
(no rw ). Ini berarti bahwa situs yang diunggah pelanggan kami ke server tidak dapat menulis ke direktori itu bahkan jika mereka memberikan izin menulis kepada pengguna / grup apache, sehingga admin WordPress tidak berfungsi. Jadi, ketika mereka mengunggah situs, mereka harus meminta dukungan dari kami untuk memperbaikinya, yang merupakan buang waktu bagi semua yang terlibat.
Katakanlah pelanggan mengunggah situs mereka ke dalam httpdocs
, jika melalui SSH saya melakukan mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr
masalah terpecahkan, jadi tidak ada yang salah dengan datanya.
Saya juga bisa lakukan restorecon -Rv httpdocs/
untuk memperbaiki masalah ini.
Jadi, pertanyaannya adalah: Bagaimana saya bisa membuat direktori dibuat / diunggah melalui VSFTPD mewarisi konteks SELinux yang tepat sama seperti mereka diwarisi ketika direktori dibuat / diunggah melalui SSH?