На своей Fedora 20 я узнал, что разрешить доступ на запись к файлам для таких процессов, как PHP, через Apache, владельца процесса, который в моем случае apache
, должны иметь права на запись в файлы. Кроме того, поскольку SELinux включен, файлы должны иметь httpd_system_rw_content_t
контекст.
Также похоже, что политика SELinux предотвращает доступ httpd к любым файлам в /home
. Практически все согласны с тем, что для решения этой проблемы файлы, к которым вы хотите получить доступ, должны иметь контекст безопасности. httpd_user_content_t
или httpd_user_rw_content_t
. Я был уверен, что сделаю это, но Apache по-прежнему говорит, что у него нет разрешения на доступ к каталогам. Когда эти файлы не имеют контекста user_content, я действительно получаю предупреждения SELinux. Когда контекст установлен, я не получаю предупреждений, но Apache по-прежнему не может получить доступ к файлам. Все под /home/me/game
имеет следующие разрешения пользователя и контекст безопасности:
$ sudo chcon -Rv --type=httpd_user_rw_content_t game
$ sudo setsebool -P httpd_read_user_content 1
$ sudo chown -R :apache game
$ ll -Zd game
drwxrwxr-x. me apache unconfined_u:object_r:httpd_user_rw_content_t:s0 game
И все же Apache говорит мне:
У вас нет разрешения на доступ к / игре на этом сервере.
Может кто-нибудь знает, что еще я могу проверить?
Вздох ... Всегда проверяйте свои разрешения, народ. Несмотря на то, что настройки SELinux были хорошими, на пути вниз по пути, который я хотел, был каталог. apache
достичь этого не позволяло этому пользователю читать / выполнять.
Прежде всего, я должен был посмотреть на /var/log/httpd/error_log
который прямо сказал:
(13) В доступе отказано: [клиент 127.0.0.1:38628] AH00035: доступ к / game / запрещен (файловая система> путь '/ home / me / game'), потому что для компонента пути отсутствуют разрешения на поиск.
Поискав ошибку в Google, я обнаружил эта страница это также объясняет проблему. Поскольку у него не было проблем с обслуживанием вещей из /var/www
Я полностью проверил права доступа к каталогам:
$ ll -d /
drwxr-xr-x. 18 root root 4096 Jun 22 18:52 /
$ ll -d /var
drwxr-xr-x. 21 root root 4096 Jun 22 12:51 /var
$ ll -d /var/www
drwxr-xr-x. 8 root root 4096 Jun 21 09:19 /var/www
Я делал то же самое на всем протяжении моего домашнего каталога:
$ ll -d /home
drwxr-xr-x. 4 root root 4096 Jun 13 21:31 /home
$ ll -d /home/me
drwx------. 35 me me 4096 Jun 22 19:05 /home/me
Ага ... простой sudo chmod o=rx /home/me
поднял меня и пошел. Я не смог бы сделать это, не проверив все, что вы меня просили, и я благодарю вас.