Выполнить разрешения в www/html, acls и файлах по сравнению с каталогами
Для веб-разработки apache2 на Debian Buster устанавливает ACL в / var / www / html
> getfacl /var/www/html
getfacl: Removing leading '/' from absolute path names
# file: var/www/html
# owner: www-data
# group: www-data
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:group::r--
default:other::---
Следовательно, пермская группа по умолчанию доступна только для чтения. Я предполагаю, что это сделано для того, чтобы веб-сервер не мог быть принужден к написанию сайта или выполнению сценариев, которые оказались в var / www / html. Это правильно? Если это так, это хорошая функция, которую я хотел бы сохранить.
Однако веб-сайт, над которым я работаю, является иерархическим. Существует верхний уровень с index.html и несколькими подкаталогами. Для выпуска используется копия дерева, такая как cp -r, для перемещения новых частей. Выпускающий агент владеет файлами, и из-за залипания группы они становятся групповыми www-данными.
После копирования новый сайт будет хорошо выглядеть, но из-за acls веб-сервер не может спуститься в подкаталоги и при попытке выдает 403 ошибки. Просто чтобы заставить это работать, я сделал это:
setfacl -m d:g::r-X
Т.е. я добавил возможность для www-данных иметь разрешение на выполнение. Веб-сервер теперь может просматривать исходное дерево, и сайт работает.
С большой буквы X, а не с маленькой буквы x, я надеялся, что acls может разрешить выполнение только для каталогов, а не для файлов, и, таким образом, у нас все еще будет безопасность, если мы не сможем поместить исполняемый скрипт в каталог, но, увы, нет. setfacl только что обработал его как маленький 'x', и теперь можно копировать исполняемые скрипты в /var/wwww/html или дальше вниз по иерархии.
Я думал о выравнивании кода, но это оказало влияние на дизайн. Хотя, когда это не так, проблем не возникает, так как "вставка" в каталоги является помехой, для этого им нужны разрешения на выполнение.
Таким образом, вопрос заключается в том, можно ли использовать acls для установки разрешений только на чтение для поддерева, а не только для плоской структуры? В Unix Land это эквивалентно запросу, можно ли выполнить execute для каталогов, но не для файлов.
(Я прошу прощения, если я упустил что-то очевидное, но я перебрал ряд дискуссий по www/html perms и по acls и не вижу этого. Правда, я не эксперт ни по apache, ни по acls, хотя я Я был рядом с ними некоторое время и тоже не совсем невежественен.)