Обновление друпала через фтп (vsftpd)

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

Аватар пользователя Fat Faggy Fat Faggy 17 февраля 2013 в 23:04

Доброго времени суток.

Заинтересовался возможностью обновлений в друпале (ядро, модули, темы, переводы) и их настройке.
Первое с чем столкнулся - друпал для обновлений хочет ftp сервер. Он у меня стоит на тестовой машине (защита не принципиальна), поэтому решение нашлось быстро: sudo chown -R www-data:www-data /var/www
Радости моей не было границ, пока я не решил сделать все "по уму".

А точнее, что пользователь www-data может быть владельцем только у папке files (sites/default/files, sites/my.site/files и т. д.), а ко всему остальному желательно владельцем сделать другого пользователя.
В таком случае, обновления в друпале будут проходить через ftp.
Для этого поднял фтп-сервер (vsftpd), создал отдельного пользователя ftp-user, которому дал доступ в /var/www ну и сделал его там владельцем всего (кроме папок files).
Но при попытке обновления выпадает ошибка, мол, не удалось обновиться, так как не удалось создать директорию (например, sites/all/modules/smtp). На самом же деле директория создается, но с правами drwx------ (владелец ftp-user), но в дальнейшем обновление падает, так как пользователь www-data не то что записать туда ничего не может, но и вообще ее не видит по идее. При попытке подключиться через фтп-клиент - создать каталог или файл тоже не получается.
Насколько я понимаю, тут проблема скорее в настройке фтп-сервера и к друпалу это все относится очень посредственно... Но я надеюсь, я не первый, кто столкнулся с подобной ситуацией, поэтому и рассчитываю на помощь Smile

Читал ман по vsftpd, нашел там несколько интересных опций, таких как: lock_upload_files, file_open_mode и chown_upload_mode, но судя по тому, что я сейчас пишу это сообщение - эксперименты с ними к успеху не привели. Ман, кстати, есть и на русском тоже.

В данный момент конфиг выглядит примерно так:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
lock_upload_files=NO
file_open_mode=0755
# chown_upload_mode=0644

Комментарии

Аватар пользователя Fat Faggy Fat Faggy 18 февраля 2013 в 20:39

Всем спасибо за ответы.

Нет, с ума не сошел, хотя давно не проверялся...

Возможно я некорректно выразился.
Конкретно меня сейчас интересует возможность обновлять не столько сам друпал, сколько его модули, темы и главное - переводы, и все это посредством модуля "Update manager". Что бы он сам искал не появились ли обновления всего этого добра, а потом (при моем на то согласии) сам бы их подгружал и устанавливал.

Насчет drush - спасибо. Тоже думал с ним начать разбираться, да все никак руки не доходят. Но в данном случае - это немного не то, о чем я говорю.

Почему именно фтп? Но если друпал сам предлагает такой вариант как штатное средство - то почему бы его не использовать?

В предыдущем сообщении я ошибся насчет невозможности создать папку/файл. Дело в том, что я пробовал их создать в корне (/var/www), а настройки vsftpd таковы, что в самой домашней директории фтп-пользователя ему запрещено создавать файлы/папки, хотя глубже - без проблем.
Они действительно создаются с правами drwx------. Но решение нашлось тут. Для того, чтоб как владелец, так и группа имела права на чтение и запись к созданным файлам и директориям необходимо было дописать в конфиг строки:
file_open_mode=0666
local_umask=0002
Теперь папки создаются с правами drwxrwxr-x, а файлы - с правами -rw-rw-r--.
Внес пользователя ftp-user в группу www-data и переназначил владельца/группу на папки sites/all/modules, sites/all/themes и sites/all/translations.
Но попытки установить/обновить модуль именно через Update manager снова неудачны. Выпадает прежняя ошибка:

Error message
Installation failed! See the log below for more information.
smtp
Error installing / updating
File Transfer failed, reason: Cannot create directory /sites/all/modules/smtp/.
Next steps

Хотя в этот раз папка smtp создана с "правильными" правами drwxrwxr-x, но внутри - пуста.
Так что в данный момент у меня к фтп-серверу претензий нет. Он все делает именно так, как и задумано. Осталось выяснить, что друпала в этой схеме не устраивает...
На сегодня у меня идеи закончились. Если у кого-то есть интересные предположения в чем здесь загвоздка - буду рад выслушать.

PS: да, я согласен, все это можно реализовать и проще по-другому, но тут уже какой-то "спортивный" интерес Smile

Аватар пользователя drupby drupby 19 февраля 2013 в 13:01

"deb" wrote:
Может, функция ftp_mkdir ожидает полный путь к папке?

вам ftp и не надо всё дело в неправильно выставленных правах - всего то и делов
чего вы прицепились к этому несчастному ftp?
не той дорогой вы идёте - я же вам давал ссылку на решение данной проблемы и заметьте там по ссылке в заголовке написано [SOLVED]

Аватар пользователя deb deb 19 февраля 2013 в 14:05

"drupby" wrote:
вам ftp и не надо всё дело в неправильно выставленных правах - всего то и делов
чего вы прицепились к этому несчастному ftp?
не той дорогой вы идёте - я же вам давал ссылку на решение данной проблемы и заметьте там по ссылке в заголовке написано [SOLVED]

Вы меня с автором вопроса не перепутали? И если верить автору то у него права правильные:

"Fat Faggy" wrote:
Теперь папки создаются с правами drwxrwxr-x, а файлы - с правами -rw-rw-r--