Ограниченный доступ к папке по SFTP-протоколу
Описание задачи
Коллега просит дать доступ разработчику на сайт Битрикс по FTP-протоколу.
Мы не хотим давать шелл-доступ по соображениям безопасности, а ftp сервер не настроен по-умолчанию на данной ВМ.
Аутентификация SSH разрешена только по ключу.
Надо добавить пользователя в систему, чтобы он мог передавать файлы в определенную папку по sftp-протоколу, но не имел бы доступ к командной строке.
Выход за пределы заданной папки ограничить.
Решение: организовать доступ по sftp, ограничив пользователю доступ только к его папке посредством chroot.
Порядок настройки
Добавим пользователя с нужной группой (например, bitrix) и своей рабочей папкой, которая д.б. на один уровень выше той, в которую мы даем пользователю запись.
Задаем пароль:Далее, настраиваем OpenSSH сервер - в файле /etc/ssh/sshd_config комментируем строку “Subsystem sftp /usr/lib/openssh/sftp-server”:
и ниже добавляем строку:В конце файла добавляем следующее:
CopyMatch User username
PasswordAuthentication yes
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
Далее, необходимо прописать правильные разрешения, чтобы пользователь не смог выйти за пределы выделенной ему директории. Все вышестоящие директории (в нашем случае это /home) тоже должны принадлежать root. Группа может быть любая.
Важные замечания!
а) Для всех обычных пользователей PasswordAuthentication
может быть установлен в no
, а для нашего sftp-пользователя доступ по паролю можно разрешить.
б) Владельцем всех каталогов верхнего уровня (над домашним) д.б. root
в) Шелл /bin/false не обязательно прописывать в /etc/shells
Опубликовано: 01.04.2021 Обновлено: 22.03.2025