У нашей компании есть веб-сервер с CentOS 7, и наши клиенты управляют своими сайтами через FTP (vsftpd). SELinux находится в принудительном режиме.
Проблема заключается в том, что данные, созданные / загружаемые через VSFTPD, не наследуют соответствующий контекст SELinux. Позволь мне объяснить.
Например, для сайтов WordPress на сервере уже есть несколько правил, которые можно увидеть, используя semanage fcontext -l |grep '/var/www'
:
/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
Итак, когда я копирую сайт WordPress, скажем, с другого сервера в каталог /var/www/html/
по SSH, папки wp-content/
и wp-content/uploads/
имеют надлежащий httpd_sys_rw_content_t
контекст безопасности. ОДНАКО, когда эти папки создаются через FTP, контекст, который они получают, httpd_sys_content_t
(без rw ). Это означает, что сайты, которые наши клиенты загружают на сервер, не могут записывать в эти каталоги, даже если они дают разрешения на запись для пользователя / группы apache, поэтому администратор WordPress не работает. Поэтому, когда они загружают сайт, они должны запросить поддержку у нас, чтобы это исправить, что является пустой тратой времени для всех участников.
Допустим, клиент загрузил свой сайт httpdocs
, если через SSH я решу mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr
проблему, поэтому с данными все в порядке.
Я также могу сделать, restorecon -Rv httpdocs/
чтобы решить проблему.
Итак, вопрос: как я могу создать каталоги, созданные / загруженные через VSFTPD, наследовать надлежащие контексты SELinux так же, как они наследуются, когда каталоги создаются / загружаются через SSH?