Table of Contents
ssh chroot
По умолчанию, при подключении по SFTP пользователь имеет возможность спускаться по дереву каталогов и видеть структуру директорий. А при наличии прав, редактировать и удалять файлы. Доступ можно ограничить, создав специальное окружение для определенной директории и всех ее поддиректорий.
Пользователи и группы
Задача
Надо предоставить пользователям user1 и user2 доступ по sftp к каталогам в которых лежат их сайты и запереть их там.
Пользователю user3 надо предоставить доступ к произвольному каталогу.
Создаем директории:
# Для user1 mkdir -p /var/www/html/user1/mysite # Для user2 mkdir -p /var/www/html/user2/mysite # Для user3 mkdir -p /mnt/project/skynet
Пользователи user1 и user2 не должны подниматься выше /var/www/html/user1/mysite
и /var/www/html/user2/mysite
соответственно.
Пользователь user3 не должен подниматься выше /mnt/project/skynet
.
Создание групп пользователей:
Создаем группу sftp_only для пользователей user1 и user2. Создаем группу sftp_user3 для пользователя user3.
groupadd sftp_only groupadd sftp_user3
Создание пользователей: Создаем пользователей, задаем им домашнюю директорию, шелл и добавляем их в группу.
useradd -d /var/www/html/user1/mysite -s /sbin/nologin -G sftp_only user1 useradd -d /var/www/html/user2/mysite -s /sbin/nologin -G sftp_only user2 useradd -d /mnt/project/skynet -s /bin/bash -G sftp_user3 user3
Задаем пользователям пароли
passwd UserName
В файлах /etc/group
и /etc/passwd
проверяем, что пользователи создались правильно
cat /etc/passwd | grep user user1:x:1001:1003::/var/www/html/user1/mysite:/sbin/nologin user2:x:1002:1004::/var/www/html/user2/mysite:/sbin/nologin user3:x:1003:1005::/mnt/project/skynet:/bin/bash
cat /etc/group | grep sftp sftp_only:x:1001:user1,user2 sftp_user3:x:1002:user3
Выставление прав на каталог
Директории /var/www/html/user1
, /var/www/html/user2
и /mnt/project
должны принадлежать пользователю и группе root.
chown root: /var/www/html/user1 chown root: /var/www/html/user2 chown root: /mnt/project/
chmod 755 /var/www/html/user1 chmod 755 /var/www/html/user2 chmod 755 /mnt/project
Директории /var/www/html/user1/mysite
должна принадлежать пользователю и группе user1, а /var/www/html/user2/mysite
должна принадлежать user2
chown -R user1:user1 /var/www/html/user1/mysite/ chown -R user2:user2 /var/www/html/user2/mysite/ chown -R user3:user3 /mnt/project/skynet
Настройка ssh
Вносим изменения в конфигурацию sshd, файл /etc/ssh/sshd_config
.
# Закомментируем строку Subsystem sftp /usr/libexec/openssh/sftp-server # И под ней добавляем новую строчку Subsystem sftp internal-sftp # Определяем пользователей и ip адреса с которых на сервер можно зайти по ssh AllowUsers root@11.22.33.44 user1@10.10.10.14,10.10.10.15 user2@192.168.22.*,4.4.5.0/24 user3@192.168.22.17 # В конец файла добавляем для групп sftp_only и sftp_user3 Match Group sftp_only ChrootDirectory /var/www/html/%u ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no Match Group sftp_user3 ChrootDirectory /mnt/project/skynet ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
Перезапускаем демон sshd
systemctl restart sshd.service
Troubleshooting
Смотрим логи
tail -f -n20 /var/log/auth.log
При попытке подключиться по sftp получаем ошибку:
fatal: bad ownership or modes for chroot directory
Следует выставить правильные права. Система требует, чтобы все каталоги пути имели права 755 и их владельцем был root