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

как разрешить пользователю apache читать / www файлы, принадлежащие root

Я хочу, чтобы вся моя веб-архитектура принадлежала root:root, и позвольте apache только права пользователя на чтение.

Не знаю, возможно ли это: chmod -R 744 заставляет его вернуть E403 из браузера, доступ запрещен для доступа к xxxx.php

Но поскольку Apache общедоступен («другой»?), Он должен уметь «читать», верно? Я этого не понимаю. Я тоже пробовал чавн root:apache но результат тот же, что еще больше сбивает с толку ...

Для файлов требуется 644, для каталогов - 755. Использование 744 для всего дерева означает, что Apache не имеет разрешения на чтение содержимого любого из каталогов.

Кроме того, в зависимости от ОС, вы можете столкнуться с проблемами с механизмами безопасности питомника (apparmor, selinux), если используете нестандартное местоположение, например /www.

Я предоставлю несколько примеров команд для очистки химической завивки, когда я не на своем телефоне.

РЕДАКТИРОВАТЬ:

Это сделает файлы и каталоги доступными для чтения всем:

find /www -type f -exec chmod 644 {} +
find /www -type d -exec chmod 755 {} +

Чтобы прояснить то, что я сказал ранее о разрешениях файлов и каталогов:

  1. Для чтения файлам не нужен бит выполнения. Разрешения 0744 устанавливают права доступа к файлам следующим образом: -rwxr--r--
  2. Каталогам нужны бит выполнения и бит чтения. Эта статья на StackOverflow предоставляет отличный обзор того, как работают права доступа к каталогам.

ИЗМЕНИТЬ (снова):

Только что заметил тег Centos, поэтому вы можете игнорировать предостережение apparmor. И я считать SELinux по умолчанию отключен, так что это тоже не должно быть проблемой. Все, что вам нужно, - это исправить разрешения.

Изучите использование ACL. Вы сможете оставить root в качестве владельца и по-прежнему предоставлять доступ к apache (без chmod'ing файлов до точки, где это ставит под угрозу безопасность).