Тематические термины: SSH, Linux
По умолчанию, при подключении по SFTP пользователь имеет возможность спускаться по дереву каталогов и видеть структуру папок. А при наличии прав, редактировать и удалять файлы. Доступ можно ограничить, создав специальное окружение для определенной папки и всех ее подпапок.
Открываем конфигурационный файл openssh:
vi /etc/ssh/sshd_config
Комментируем следующую строку:
#Subsystem sftp /usr/lib/openssh/sftp-server
Добавляем следующее (обязательно в самый конец файла).
Для определенного пользователя:
Subsystem sftp internal-sftp -f AUTH -l VERBOSEMatch 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 VERBOSEMatch 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/
Проверить настройку можно с помощью любого sftp-клиента, например Filezilla или WinSCP.
При возникновении проблем, стоит просмотреть лог
tail -f -n20 /var/log/auth.log
tail -f -n20 /var/log/secure
* первая команда подходит для систем на базе RPM, вторая — Debian.
По сути, это более простой способ настроить окружение chroot для пользователя UNIX систем.
Его развертывание сводится к установке:
yum install lshell
apt-get install lshell
* первая команда для Red Hat / CentOS / Fedora …, вторая — Debian / Ubuntu.
И смене шела для пользователя:
vi /etc/passwd
sftpuser:x:1004:1004::/home/sftpuser:/usr/bin/lshell
Остальная настройка выполняется в файле /etc/lshell.conf.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies