[SOLVED] Как заставить модуль Upload давать права 440 по дефолту?

Главные вкладки

Аватар пользователя Kernel_panic Kernel_panic 2 сентября 2010 в 19:06

Привет сообществу.
Вопрос собственно вот в чем. При аттаче файла ему по умолчанию присваиваются права 600 и владелец:группа пользователя PHP-FPM. Так как nginx работает от одного пользователя, а PHP-FPM от другого, то при аттаче nginx не может читать эти файлы до смены прав.
Вопрос как сделать чтобы автоматом права выставлялись 440? Или есть другой выход?

Комментарии

Аватар пользователя Vladimir_VVV Vladimir_VVV 2 сентября 2010 в 20:00

на любой posix(ну не винда если права 600) маску хотябы сменить нужно, чтоб создавало с правами 644.

# umask 0022

к тому же если сервак дома то почему бы не дать nginx`у юзера "PHP-FPM", в nginx.conf пишем

user PHP-FPM;

и вобще все гут.

Аватар пользователя Kernel_panic Kernel_panic 2 сентября 2010 в 20:05

"Vladimir_VVV" wrote:
к тому же если сервак дома то почему бы не дать nginx`у юзера "PHP-FPM", в nginx.conf пишем

user PHP-FPM;

и вобще все гут.

Да, ну ты молодец. Тогда че вообще париться? Пускай от одного пользователя все работает. Это не Ъ. похапе с веб сервером не должны работать от одного пользователя. В принципе это решается запуском PHP-FPM от nobody:nginx и установкой gid на директорию. Наверно так и придется делать

Аватар пользователя Vladimir_VVV Vladimir_VVV 2 сентября 2010 в 20:16

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

Аватар пользователя Kernel_panic Kernel_panic 2 сентября 2010 в 22:51

Не знаю что значит маску поменять на похапе, но у пользователя nobody от которого запущено похапе umask - 0022. Создается файл один черт с правами 600. Есть еще идеи?

Аватар пользователя Kernel_panic Kernel_panic 3 сентября 2010 в 11:15

Вобщем то решил очень просто. В init скрипт PHP-FPM (прямо во вторую строку) добавил umask 222. Другими способами наподобие прописывания umask в ~/.profile не работают так как у пользователя nobody нет shell'a (/sbin/nologin).
Работает еще установка umask на директорию, но только до перезагрузки сервера.

Аватар пользователя Vladimir_VVV Vladimir_VVV 3 сентября 2010 в 22:59

А почему 222? этож типа права 0444, запись же будет запрещена, а если удалять потом? или я чето недогнал, может на меня школа со своим сентябрем так действует?

Аватар пользователя Kernel_panic Kernel_panic 5 сентября 2010 в 7:46

Да, если используется "Оптимизировать 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 в зависимости от дистрибутива.
Второй метод не проверял еще, но в теории должно работать.