@antonowano
Профессиональный самоучка

Как правильно расставить права на директорию сайта, чтобы удобно работать с ней локально?

Уже не первую неделю мучаюсь с распределениями прав.
Использую связку nginx, php-fpm.

Хочется создать отдельную директорию с сайтом в которой я могу работать от домашнего пользователя и просматривать результат на локальной машине. Проблема в том что, если я создаю файл под своим пользователем, он выдает Permission denied при просмотре через браузер, если я передаю владение пользователю nginx, тогда я не могу редактировать этот файл. Назначить права на 776 мне кажется дикостью.

======== Опишу структуру ========

/etc/nginx/nginx.conf
Полностью стандартный, пользователь в нем стоит nginx.

/etc/nginx/conf.d/joomla.test.conf
Здесь у меня хост для локального домена joomla.test.

/etc/php-fpm.d/www.conf
Везде (в 4ёх местах) указал пользователя и группу nginx.

/etc/share/nginx/joomla.test
папка моего сайта
public_html - корень сайта
error.log, access.log - логи nginx

======== Конец структуре ========

Могу, указать пользователя Antonov:nginx с правами 750, и вроде как все работает, вот только не удобно контролировать права и SELinux метки (которые устанавливаются chcon). И всё равно иногда nginx ругается из-за того, что не может войти в какую либо из папок и для папок приходится делать 755, как будто там еще какой-то третий пользователь участвует (вроде root).
Как мне настроить права так, чтобы работая под своим пользователем Antonov:Antonov и не приходилось каждый раз менять режим, владельца и группу у файлов? Да и как вообще правильно распределить права? Возможно ли настроить так чтобы работало все при правах в 700?
  • Вопрос задан
  • 2033 просмотра
Решения вопроса 1
alekciy
@alekciy
Вёбных дел мастер
Правильный вариант:
1) Отключить SELinux вообще.
2) Создать группу dev: sudo groupadd dev
2) Свести в группу dev пользователей nginx и Antonov (и вообще всех кому требуется доступ к этому поддереву файлов), как уже упомянул Yar Rick , командой:
sudo usermod -aG nginx dev
sudo usermod -aG Antonov dev

3) Рекурсивно сменить права на директории на 2775 и 664 для файлов командами:
sudo find /etc/share/nginx/joomla.test -type d -exec chmod 2775 {} \;
sudo find /etc/share/nginx/joomla.test -type f -exec chmod g+w {} \;

Почему именно 2775 можно посмотреть в видео: https://www.youtube.com/watch?v=EAfcMMlcNgg&t=704s
4) Уставить для nginx и php-fpm значение umask=002 (либо воспользоваться ACL и не зависеть от umask, пояснение в видео: https://youtu.be/gLMUCEiMFYA?t=365 ).

Возможно ли настроить так чтобы работало все при правах в 700?

Да, возможно. Но придется запускать nginx от Antonov и php-fpm запускать от Antonov. Но вообще 0700 большого смысла не имеет (хотя использовать на корневой папке 770 возможно).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Yar_Rick
@Yar_Rick
yareg.com
Можно добавить пользователя www-data в группу пользователя Antonov. Тогда веб-сервер сможет читать файлы, созданные пользователем Antonov.

sudo usermod -a -G Antonov www-data

Ну а папкам, куда может писать веб-сервер, дать права 777.
Ответ написан
Комментировать
@Vitsliputsli
Для локального использования (разработка/отладка), проще всего запускать Apache/nginx от пользователя под которым работаете.
Ответ написан
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
дополню Vitsliputsli
на проде нормально иметь права 755/644 или 750/640
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы