Ошибка перезаписи SFTP для пользователя с групповым доступом на запись

Это действительно странно. У меня настроен сервер Ubuntu (12.04) с proFTPD, и я включил SFTP. У меня есть пользователь, которому я хочу иметь возможность редактировать набор файлов. Файлы принадлежат пользователю www-data и группе www-data. Файлы имеют права 664. Пользователь состоит в группе www-data и имеет возможность просматривать и редактировать файлы при подключении по ssh через шелл. Однако через SFTP пользователь может просматривать эти файлы, но попытка их редактирования приводит к тому, что SFTP сообщает об отказе в разрешении, а затем размер файла становится нулевым. Однако пользователь может удалять и перемещать файлы. Может ли кто-нибудь думать о какой-либо причине, почему это может происходить? Я также попытался изменить групповое владение файлом на другую группу и добавить пользователя в эту группу, но возникает та же проблема.

Проблема не возникает при использовании обычного FTP с proFTPD.

Изменить: по запросу полный текст ошибки (это интерактивный режим командной строки sftp):

Uploading /Users/leonaves/Desktop/testfile to /testfile
remote open("/testfile"): Permission denied

Изменить 2: вывод ls -l для домашнего каталога пользователя:

ls -l вывод

Редактировать 3: журнал SFTP показывает следующее:

error changing permissions of '/testfile' to 0100644: Operation not permitted

person Leon Aves    schedule 03.11.2015    source источник
comment
попытка изменить их приводит к тому, что SFTP сообщает об отказе в разрешении. Измените свой вопрос, включив в него полный текст этого сообщения об ошибке. Также было бы полезно показать вывод ls -l для этого каталога www-data (сам каталог) и для этих файлов, которые вы пытаетесь перезаписать.   -  person Kenster    schedule 04.11.2015
comment
Сообщение об ошибке @Kenster добавлено, скоро будет сделан снимок экрана и добавлен вывод ls -l.   -  person Leon Aves    schedule 04.11.2015
comment
@Kenster Добавлен вывод ls-l   -  person Leon Aves    schedule 04.11.2015
comment
Какие права доступа к каталогу, содержащему testfile?   -  person Kenster    schedule 04.11.2015
comment
drwxr-xr-x и принадлежит пользователю, пытающемуся выполнить загрузку, и этой группе пользователей, это их домашний каталог.   -  person Leon Aves    schedule 04.11.2015
comment
Каталог vhosts на самом деле является привязкой, но в этом каталоге возникают те же проблемы, что и в тестовом файле.   -  person Leon Aves    schedule 04.11.2015
comment
Ничего очевидного в голову не приходит. Сервер SFTP - это proFTPD? Если в журнале proFTPD нет ничего полезного, я был бы склонен запустить strace на серверном процессе и повторить тест. Если системный вызов не работает — в отличие от того, что proFTPD применяет какое-то собственное правило — тогда strace должен точно показать, что происходит.   -  person Kenster    schedule 04.11.2015
comment
@Kenster Итак, я искал в журнале proFTPD, но понял, что у SFTP есть свой собственный файл журнала, нашел там кое-что интересное и добавил это к вопросу, есть мысли?   -  person Leon Aves    schedule 04.11.2015


Ответы (1)


Итак, проблема заключалась в том, что по какой-то причине proFTPD пытался установить разрешения для файла перед загрузкой на 0644, но не смог, так как пользователь не был владельцем. Причина, по которой он пытался установить эти разрешения, подробно описана в документации proFTPD (http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPOptions):

Когда клиент SFTP загружает файл или создает каталог, требуемые разрешения на пути отправляются на сервер как часть загрузки. (Это отличается от FTP, который не включает права доступа к файлам при загрузке.)

Теперь я не уверен, были ли это мои клиенты (я пробовал несколько клиентов SFTP) целенаправленно пытались установить эти разрешения, или это была какая-то настройка по умолчанию для proFTPD, но с использованием опции IgnoreSFTPUploadPerms (подробно описанной в приведенном выше связанном разделе документы), я смог остановить это, влияя на передачу файлов:

Если по какой-либо причине вам нужно больше функций, подобных FTP, и вы хотите, чтобы mod_sftp молча игнорировал любые разрешения, отправленные клиентом SFTP, используйте эту опцию.

person Leon Aves    schedule 03.11.2015