ACL для пользователя www-data установлен на r--, Apache (PHP) по-прежнему не может читать файлы

ACL для пользователя www-data установлен на r--, Apache (PHP) по-прежнему не может читать файлы

Моему PHP-скрипту нужен доступ к некоторым файлам, которые находятся в совершенно другом каталоге.

Я установил ACL для пользователя www-data с разрешением на чтение, но функция PHP file_get_contets() возвращает ошибку «Отказано в доступе».

Это работает только в том случае, если я задаю пользователя или группу www-data для этого каталога, чего я делать не хочу, если только списки контроля доступа не влияют на программы, работающие под заданными пользователями, а установка владельца — единственный способ сделать это.

Список ACL:

# owner: user1
# group: group1
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:www-data:rwx
default:user:user1:rwx
default:user:user2:rwx
default:group::rwx
default:mask::rwx
default:other::---

заранее спасибо

решение1

Ваш вывод показывает, что вы установили ACL "по умолчанию" (наследуемый) для каталога, но не "нормальный" (эффективный) ACL. Другими словами, записи с префиксом default:существуют только для копирования во вновь созданные файлы, но ониненемедленно обратиться к этому каталогу.

Таким образом, единственными эффективными разрешениями являются следующие, и единственная запись ACE, соответствующая пользователям «www-data» и «user2», — это общая other::---запись, которая вообще не предоставляет никаких разрешений:

# владелец: user1
# группа: группа1
# флаги: -s-
пользователь::rwx
группа::rwx
другой::---

Поскольку «www-data» не соответствует ни одной записи ACE, которая бы предоставляла разрешение +x (обход) для каталога, ему не разрешается получать доступ ни к каким файлам внутри него, независимо от того, что могут указывать их собственные разрешения.

Чтобы исправить это, снова настройте ACL, на этот раз без добавления флага «по умолчанию»:

setfacl -m "u:www-data:rwx" the_directory

Связанный контент