Назад | Перейти на главную страницу

Думаю, проблема с Centos 7 Selinux? php не может читать или писать

У меня есть папка загрузки для моего веб-приложения: /disk2/app/uploads.

ls -Z возвращает:

drw-r--r--. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 uploads

ls -Z / возвращает:

drwxrwxrwx. root root system_u:object_r:file_t:s0      disk2

ls -Z /disk2 возвращает:

drwxr-xr-x. apache    apache    unconfined_u:object_r:file_t:s0  app

многое из чего я получил от Вот

когда я бегу is_writable('/disk2/app/uploads') в php он возвращается false

Я испробовал все возможные варианты, чтобы понять это.

Соответствующие журналы аудита:

type=AVC msg=audit(1510944045.012:202923): avc:  denied  { getattr } for  pid=14017 comm="httpd" path="/disk2/app/uploads/12222/206/1496103427-20170526_151922.jpg" dev=sdb ino=17826039 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:file_t:s0 tclass=file
type=AVC msg=audit(1510944045.012:202924): avc:  denied  { write } for  pid=14017 comm="httpd" name="uploads" dev=sdb ino=2097155 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:file_t:s0 tclass=dir

Вам необходимо настроить контексты файлов SELinux так, чтобы они были правильно заданы при создании файлов. Файлы в целом наследуют fcontext своего родительского каталога, поэтому вам нужно указать это правильно. Что-то вроде

semanage fcontext -a -t httpd_sys_rw_content_t "/disk2/app/uploads(/.*)?"
restorecon -Rv /disk2/app/uploads

должно быть в фокусе.