Поясните пожалуйста, вот есть у меня сайт в /var/www/site1, работает на nginx + php-fpm. Nginx и php-fpm работают из под пользователя www-data.
1) На сколько я понимаю, работает с файлами именно nginx? То есть от его имени запускаются все скрипты и тп? Какую роль выполняет php-fpm, от какого пользователя он должен работать?
2) Кто должен быть владельцем директории site1? Сейчас у меня это пользователь, под которым я вхожу в систему, а для директории storage (логи) владельцем является www-data.
3) Правильно ли будет добавить все содержимое проекта в группу www-data. Получится что владелец myUser, группа www-data. И права, (кроме директорий для записи) выставить как 710? То есть владелец может все, nginx может запускать, а остальные ничего? UPD: и 740 для директорий с картинками, стилями и тп UPD2:Почему картинки/скрипты не отдаются с правами 4? Нужно чтение+исполнение?
nginx у вас работает со статикой, а запросы к php-файлам он передает к php-fpm. В упрощенном варианте оба могут работать от www-data.
Пользователю www-data и должны принадлежать файлы сайта.
710? Зачем вам запуск на файлах? 640 достаточно. На директориях 750(а вот на директориях бит «запускаемости» нужен). Почитайте хотя бы https://ru.wikipedia.org/wiki/Chmod что бы понимать права.
Значения разные для файлов и директорий потому, что флаг «выполнения» по-разному действует на файлы и директории. Для обычных файлов «выполнение» означает открытие файлов, для исполняемых файлов — их запуск, а для каталогов — просмотр содержимого.
Что такое "открытие" файлов для обычных файлов и "просмотр содержимого" для каталогов? Я думал, что для этого нужны права на чтение? За что тогда отвечает чтение?
«Очень любопытный режим доступа к каталогу - 3 (-wx): он позволяет делать в директории все, что угодно, но не позволяет прочитать имена объектов в директории. Т.е. если вам не известны названия объектов в этом каталоге, то вы сделать с ними ничего не сможете (даже удалить по маске * т.к. маску не к чему применять - имена то недоступны).
В каталоге с режимом доступа 3 (-wx) можно создавать новые, переименовывать и удалять файлы и каталоги (если вы знаете их имя); читать, изменять, запускать файл (если достаточно на него прав, и опять же - вы знаете его имя). Можно даже менять права доступа на файлы и каталоги (если вы знаете имя). Но самое интересное, что если вы сможете перейти (по cd5)) в подкаталог такого каталога (а для этого вам опять нужно знать его имя), то там у вас будет «все в ожуре» (если конечно у этого подкаталога будет нормальный режим доступа).
Никакой рекурсивный поиск/удаление тоже не сможет залезть внутрь такого каталога - ему ведь нужны названия - а их из такого каталога - никак не получить»
Извините, под рукой нет книги Немет, что бы оттуда главу про права процитировать, насколько я помню там хорошо это дело разбиралось.
WebDev: тут вопрос что вам нужно. Как вариант своего пользователя в группу www-data, на файлы 660, на директории 770 и setgid(Бит setgid для директории (chmod g+s) заставляет только новые каталоги и файлы, созданные в ней, наследовать ID группы этой директории вместо ID группы пользователя, создавшего файл. Новые поддиректории также наследуют бит setgid. Это позволяет создать общее рабочее пространство для группы без неудобств членам группы явно менять их текущую группу для создания новых файлов и каталогов), что бы файлы которые будете создавать принадлежали нужной группе сразу
Я считаю, что пользователю под которым ходишь по ssh небезопасно владеть файлами сайтов. У меня все www-data:www-data, что бы мой пользователь не лез в файлы сайта.