[SOLVED] Как заставить модуль Upload давать права 440 по дефолту?
Прислано: Kernel_panic
чт, 02/09/2010 - 15:06
Привет сообществу.
Вопрос собственно вот в чем. При аттаче файла ему по умолчанию присваиваются права 600 и владелец:группа пользователя PHP-FPM. Так как nginx работает от одного пользователя, а PHP-FPM от другого, то при аттаче nginx не может читать эти файлы до смены прав.
Вопрос как сделать чтобы автоматом права выставлялись 440? Или есть другой выход?
- Kernel_panic's blog
- Для комментирования войдите или зарегистрируйтесь
Это где такой хостинг найден?
- Для комментирования войдите или зарегистрируйтесь
Это где такой хостинг найден?
Дома товарищ, дома. В ящике лежит такой хостинг
- Для комментирования войдите или зарегистрируйтесь
на любой posix(ну не винда если права 600) маску хотябы сменить нужно, чтоб создавало с правами 644.
# umask 0022к тому же если сервак дома то почему бы не дать nginx`у юзера "PHP-FPM", в nginx.conf пишем
user PHP-FPM;
и вобще все гут.
- Для комментирования войдите или зарегистрируйтесь
gentoo-server kernel # umask
0022
- Для комментирования войдите или зарегистрируйтесь
к тому же если сервак дома то почему бы не дать nginx`у юзера "PHP-FPM", в nginx.conf пишем
user PHP-FPM;
и вобще все гут.
Да, ну ты молодец. Тогда че вообще париться? Пускай от одного пользователя все работает. Это не Ъ. похапе с веб сервером не должны работать от одного пользователя. В принципе это решается запуском 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 в зависимости от дистрибутива.
Второй метод не проверял еще, но в теории должно работать.
- Для комментирования войдите или зарегистрируйтесь

Комментарии