Công ty chúng tôi có một máy chủ web với CentOS 7 và khách hàng của chúng tôi quản lý trang web của họ thông qua FTP (vsftpd). SELinux đang ở chế độ thực thi.
Vấn đề là dữ liệu được tạo / uploadad thông qua VSFTPD không được kế thừa bối cảnh SELinux thích hợp. Hãy để tôi giải thích.
Ví dụ: đối với các trang web WordPress, máy chủ có sẵn một số quy tắc có thể được nhìn thấy bằng cách sử dụng semanage fcontext -l |grep '/var/www'
, đó là:
/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
Vì vậy, khi tôi sao chép một trang web WordPress, hãy nói từ một máy chủ khác vào một thư mục /var/www/html/
bằng SSH, các thư mục wp-content/
và wp-content/uploads/
có httpd_sys_rw_content_t
bối cảnh bảo mật thích hợp . TUY NHIÊN, khi các thư mục đó được tạo thông qua FTP, bối cảnh họ nhận được là httpd_sys_content_t
(không có rw ). Điều này có nghĩa là các trang web mà khách hàng của chúng tôi tải lên máy chủ không thể ghi vào các thư mục đó ngay cả khi họ cấp quyền ghi cho người dùng / nhóm apache, vì vậy quản trị viên WordPress không hoạt động. Vì vậy, khi họ tải lên một trang web, họ phải yêu cầu hỗ trợ từ chúng tôi để khắc phục điều này, điều này gây lãng phí thời gian cho tất cả những người liên quan.
Giả sử khách hàng đã tải lên trang web của họ vào httpdocs
, nếu thông qua SSH, tôi đã mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr
giải quyết được vấn đề, vì vậy không có gì sai với dữ liệu.
Tôi cũng có thể làm gì restorecon -Rv httpdocs/
để khắc phục sự cố.
Vì vậy, câu hỏi là: Làm cách nào để các thư mục được tạo / tải lên thông qua VSFTPD có thể thừa hưởng bối cảnh SELinux thích hợp giống như chúng được kế thừa khi các thư mục được tạo / tải lên thông qua SSH?