Как работают разрешения?

Я столкнулся с чем-то странным (по крайней мере, для меня) при первом использовании CloudLinux. Я давний пользователь Ubuntu, но все же считаю себя новичком.

Я устанавливал Nginx с PHP-FPM на серверы Ubuntu множество раз. Мой обычный подход заключается в создании пользователя и создании www каталога в домашней директории пользователя. Я устанавливаю пользователя и группу конфигурации пула PHP-FPM на вновь созданного пользователя и указываю виртуальный хост Nginx на домашний каталог пользователя с корнем документа, указывающим на папку www.

Это прекрасно работало для меня на Ubuntu в течение долгого, долгого времени.

На прошлой неделе я попробовал настроить то же самое на CloudLinux (который, насколько я понимаю, является каким-то дистрибутивом CentOS).

Результат оказался совершенно другим. У меня не было проблем с выполнением Nginx файлов PHP, но я обнаружил, что Nginx не может обслуживать статические (или другие файлы, не обрабатываемые PHP-FPM). В результате отладки выяснилось, что пользователь nginx не имел достаточных прав на чтение папки /home/user/www. Быстрое решение для меня заключалось в перемещении www в /var/www/sitename, обновлении корня документа в Nginx, и я мог быть в пути.

Это просто заставило меня задуматься о том, в чем, собственно, разница. Является ли мой подход на Ubuntu вообще разумным (т.е. безопасным), если это не сработало на другом дистрибутиве?

Почему пользователь Nginx может без проблем прочитать содержимое домашнего каталога моего пользователя на Ubuntu, но не на CloudLinux?

.
1
задан 14 September 2020 в 21:49
1 ответ

Если вы хотите, чтобы ~user/www был доступен для чтения каким-либо процессом, убедитесь, что ~user/www имеет x-разрешения (для всех каталогов от корня до целевого каталога). Этот x позволяет просто войти в каталог, а не читать каталог.

Поэтому, чтобы прочитать целевой каталог, также добавьте разрешение r (w-разрешение на создание/удаление файлов). Если группы ~user/www и процесс не могут быть легко сопоставлены, вы можете использовать ACL (списки контроля доступа). См. подробности в командах getfacl и setfacl.

Обратите внимание, что это было для содержащего каталога; не забудьте установить права и для самих файлов.

0
ответ дан 9 August 2021 в 14:06

Теги

Похожие вопросы