Привет сообществу.
Вопрос собственно вот в чем. При аттаче файла ему по умолчанию присваиваются права 600 и владелец:группа пользователя PHP-FPM. Так как nginx работает от одного пользователя, а PHP-FPM от другого, то при аттаче nginx не может читать эти файлы до смены прав.
Вопрос как сделать чтобы автоматом права выставлялись 440? Или есть другой выход?
Комментарии
Это где такой хостинг найден?
Дома товарищ, дома. В ящике лежит такой хостинг
на любой posix(ну не винда если права 600) маску хотябы сменить нужно, чтоб создавало с правами 644.
к тому же если сервак дома то почему бы не дать nginx`у юзера "PHP-FPM", в nginx.conf пишем
и вобще все гут.
gentoo-server kernel # umask
0022
Да, ну ты молодец. Тогда че вообще париться? Пускай от одного пользователя все работает. Это не Ъ. похапе с веб сервером не должны работать от одного пользователя. В принципе это решается запуском PHP-FPM от nobody:nginx и установкой gid на директорию. Наверно так и придется делать
даже если и слить все на одного юзера то маску на "похапе" все равно придется поменять, а то удалять файлы через "похапэ" будет невозможно.
Не знаю что значит маску поменять на похапе, но у пользователя nobody от которого запущено похапе umask - 0022. Создается файл один черт с правами 600. Есть еще идеи?
Проблему решил всем спасибо
Поделитесь решением
Вобщем то решил очень просто. В init скрипт PHP-FPM (прямо во вторую строку) добавил umask 222. Другими способами наподобие прописывания umask в ~/.profile не работают так как у пользователя nobody нет shell'a (/sbin/nologin).
Работает еще установка umask на директорию, но только до перезагрузки сервера.
А почему 222? этож типа права 0444, запись же будет запрещена, а если удалять потом? или я чето недогнал, может на меня школа со своим сентябрем так действует?
Да, если используется "Оптимизировать JS и CSS" то надо ставить 0022. По умолчанию для PHP-FPM у меня не работал умолчальный umask (0022. Не знаю почему) пока не создал ~/.profile с прописанным umask. Удаляются аттачи нормально.
По идее 222 было бы лучше, но при создании *CSS кэша PHP нужны права на запись. Можно например сделать так:
Демону дать umask 222, а для того чтобы PHP имело права на запись в нужную директорию - задать для нее отдельный umask. Это будет работать до ребута сервера, но и это решаемо добавлением umask 0022 /srv/http/../sites/default/files/ в какой нибудь системный инит скрипт например в /etc/conf.d/local.start или /etc/rc.local в зависимости от дистрибутива.
Второй метод не проверял еще, но в теории должно работать.