SSH Linux с установленным клиентом/сервером OpenSSH; настройки зависят от дистрибутива

SFTP открывается, но не позволяет записать файлы

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

SFTP открывает каталог, но загрузка файла завершается Permission denied или Failure. Нужно разделить права каталога, ограничения chroot, свободное место и особенности файлового сервера.

В этой статье
  1. Как распознать проблему и когда применять инструкции
  2. Причины и признаки
  3. Подробная проверка и безопасное решение
  4. Как проверить результат и что делать, если не помогло

#Как распознать проблему и когда применять инструкции

SFTP открывает каталог, но загрузка файла завершается Permission denied или Failure. Нужно разделить права каталога, ограничения chroot, свободное место и особенности файлового сервера. Уточните модель/сборку системы, наличие резервной копии и способ восстановить доступ, прежде чем применять действия.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Нет права на записьВладелец/группа и разрешения каталога не подходят учётной записиput возвращает Permission deniedСмотрите соответствующий диагностический шаг ниже: проверяйте именно этот признак перед изменением настроек.
Chroot сделан для безопасностиКорневой каталог chroot не должен быть записываемым пользователем в типичной конфигурации OpenSSHМожно читать, но нельзя писать в корень jailСмотрите соответствующий диагностический шаг ниже: проверяйте именно этот признак перед изменением настроек.
Файловая система доступна только для чтенияМонтирование read-only или закончилось место/квотаДаже владелец каталога не может создать файлСмотрите соответствующий диагностический шаг ниже: проверяйте именно этот признак перед изменением настроек.

#Подробная проверка и безопасное решение

  1. Шаг 1. Уточните именно удалённый каталогВ SFTP после входа введите pwd, ls -la, затем lpwd. Первые команды относятся к серверу, последняя показывает локальную папку. Не путайте путь на компьютере пользователя с путём на сервере.
  1. Шаг 2. Повторите запись безопасным тестомСоздайте на локальном компьютере маленький текстовый файл без личных данных и попробуйте его загрузить командой put. Если записать нельзя, сохраните точный текст ошибки; чужие файлы не перезаписывайте.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    Откройте терминал той машины, которая названа в шаге; команда содержит примерные имена/пути. Подставьте свои значения, сравните вывод с ожидаемым результатом и при ошибке выясните причину прежде, чем продолжать.
    printf "SFTP test\n" > /tmp/sftp-test.txt
  1. Шаг 3. Проверьте права на сервереПри наличии обычного SSH-доступа откройте терминал на сервере под тем же пользователем. Просмотрите владельца, группу и права именно нужной папки. Без SSH попросите администратора сделать проверку.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    Откройте терминал той машины, которая названа в шаге; команда содержит примерные имена/пути. Подставьте свои значения, сравните вывод с ожидаемым результатом и при ошибке выясните причину прежде, чем продолжать.
    ls -ld /srv/sftp/uploads
  1. Шаг 4. Проверьте разрешения на каждом родительском каталогеСерверная команда namei показывает, где отсутствует право прохода x. Укажите фактический путь; менять chmod -R нельзя, это сломает разграничение доступа.
    Linux · Терминал (Bash)Команда
    Откройте терминал той машины, которая названа в шаге; команда содержит примерные имена/пути. Подставьте свои значения, сравните вывод с ожидаемым результатом и при ошибке выясните причину прежде, чем продолжать.
    namei -l /srv/sftp/uploads
  1. Шаг 5. Уточните ограничения ChrootDirectory и ForceCommandНа сервере администратор проверяет применённый Match и ChrootDirectory. В конфигурации chroot корневая папка должна удовлетворять требованиям OpenSSH; рабочую папку для записи создают внутри, не делают корень jail доступным на запись.
  2. Выполняется в терминале сервера с правами администратора; требуется разрешение владельца
    Linux · Терминал (Bash)КомандаНужен sudo
    Выполняется в терминале сервера с правами администратора; требуется разрешение владельца. Уточните фактические адреса и имена, прочитайте вывод и не выполняйте действия, если среда отличается от описанной.
    sudo sshd -T | grep -E "^(chrootdirectory|forcecommand|subsystem) "
  1. Шаг 6. Проверьте свободное место и режим томаНа сервере для фактического каталога узнайте наличие места и режим монтирования; при квоте на пользователя место может быть, но запись всё равно запрещена. Ничего не форматируйте.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    Откройте терминал той машины, которая названа в шаге; команда содержит примерные имена/пути. Подставьте свои значения, сравните вывод с ожидаемым результатом и при ошибке выясните причину прежде, чем продолжать.
    df -h /srv/sftp/uploads
  1. Шаг 7. Исправляйте адресно и повторите загрузкуАдминистратор должен назначить запись только согласованной группе/пользователю на выделенный подкаталог, не расширяя права всего /srv. После согласованной правки повторите put /tmp/sftp-test.txt в нужный удалённый каталог и удалите лишь свой тестовый файл.

#Как проверить результат и что делать, если не помогло

Тестовый файл можно загрузить и прочитать под нужной учётной записью, а другие пользователи не получили лишних прав. При запрете записи в корень chroot используйте специально выделенный writable-подкаталог. Если симптомы не исчезли, сохраните точное сообщение об ошибке и выполненные проверки; не повторяйте опасные процедуры циклически.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.