Настройка домашнего каталога SFTP или SSH Chroot

По умолчанию, при подключении по SFTP пользователь имеет возможность спускаться по дереву каталогов и видеть структуру папок. А при наличии прав, редактировать и удалять файлы. Доступ можно ограничить, создав специальное окружение для определенной папки и всех ее подпапок.

Настройка SSH

Открываем конфигурационный файл openssh:

vi /etc/ssh/sshd_config

Комментируем следующую строку:

#Subsystem sftp /usr/lib/openssh/sftp-server

Добавляем следующее (обязательно в самый конец файла).

Для определенного пользователя:

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match user sftpuser
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

* где sftpuser — имя пользователя, для которого срабатывает набор правил; %h (home directory) — домашняя директория пользователя (здесь также можно указать конкретный каталог); ForceCommand internal-sftp — использовать только sftp, встроенный в ssh.
** если данные строки добавить не в конец файла, сервис ssh может не запуститься.

Для группы пользователей:

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match group sftpgroup
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no

* как видим, в данном примере все то же самое — только меняем user на group/home/%u — другой способ прописать путь к домашней директории (/home + имя пользователя).

После перезапускаем службу:

systemctl restart ssh || systemctl restart sshd || service ssh restart || service sshd restart

* команда рассчитана на запуск в разных версиях Linux (CentOS / Ubuntu / Red Hat / Debian и так далее, а также на базе systemd или ранних версий), так как служба может называться ssh или sshd.

Создание пользователя и группы

Если в системе еще нет группы или пользователя, для которого мы настроили SSH chroot, выполняем следующие команды.

Создание пользователя

useradd sftpuser -d /home/sftpuser -m

* где sftpuser — имя пользователя; /home/sftpuser — домашний каталог пользователя.

Задаем пароль для пользователя:

passwd sftpuser

Создание группы

groupadd sftpgroup

Для добавления пользователя в группу можно воспользоваться командой:

usermod sftpuser -G sftpgroup

или отредактировать файл:

vi /etc/group
sftpgroup:x:1004:sftpuser

1004 — идентификатор группы (может быть любым числом).

Выставление прав на каталог

При попытке подключиться по SFTP мы получим ошибку fatal: bad ownership or modes for chroot directory, так как необходимо выставить правильные права. Система требует, чтобы все каталоги пути имели права 755 и их владельцем был root.

В нашем примере мы выполняем следующие команды:

chown root: /home/sftpuser
chmod 755 /home/sftpuser

Права будут следующие:

drwxr-xr-x 2 root root 4096 окт.  30 09:00 /home/sftpuser/

Похожие записи