Table of Contents

Настройка связки chroot + sftp

Связку chroot + sftp применяют когда необходимо “запереть” пользователя в определенной папке. Как правило такие задачи возникают на серверах с хостингом.

Задача

Надо предоставить пользователям user1 и user2 доступ по sftp к каталогам в которых лежат их сайты и запереть их там.
Пользователю user3 надо предоставить доступ к произвольному каталогу.

Настройка

1. Создание директорий
Определяем место где будут лежать сайты пользователей, создаем необходимые директории.

Пользователи user1 и user2 не должны подниматься выше /var/www/user1 и /var/www/user2 соответственно.
Пользователь user3 не должен подниматься выше /mnt/sdc1/project.

2. Создание групп пользователей
Создаем группу sftp_only (скорее всего она уже есть) для пользователей user1 и user2.
Создаем группу sftp_user3 для пользователя user3.

# groupadd sftp_only
# groupadd sftp_user3

3. Создание пользователей
Создаем пользователя, задаем ему домашнюю директорию, шелл и добавляем его в группу.

# useradd -d /var/www/user1/mysite -s /sbin/nologin -G sftp_only user1
# useradd -d /var/www/user2/mysite -s /sbin/nologin -G sftp_only user2
# useradd -d /mnt/sdc1/project -s /sbin/nologin -G sftp_user3 user3

Командой passwd задаем пользователям пароли.
В файлах /etc/group и /etc/passwd проверяем, что пользователи создались правильно.

4. Правим sshd_config
Вносим изменения в конфигурацию sshd, файл /etc/ssh/sshd_config.
Коментируем строПри написании заметки использовались материалы:чку

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

И под ней добавляем новую строчку

Subsystem       sftp    internal-sftp

Определяем пользователей и ip адреса с которых на сервер можно зайти по ssh.

AllowUsers root@1.1.1.1 user1@2.2.2.2,3.3.3.3 user2@4.4.4.*,4.4.5.0/24 user3

AllowUsers root - разрешать root по ssh конечно грешновато=)

В конец файла добавляем для групп sftp_only и sftp_user3.

Match Group sftp_only
    ChrootDirectory /var/www/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

Match Group sftp_user3
    ChrootDirectory /mnt/sdc1/project
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

Сохраняем /etc/ssh/sshd_config и перезапускаем sshd.

5. Выставляем права на директории
Директории /var/www/user1, /var/www/user2 и /mnt/sdc1/project должны принадлежать пользователю и группе root.
Директори /var/www/user1/mysite должна принадлежать пользователю и группе user1, а /var/www/user2/mysite должна принадлежать user2.

После этого все должно работать.


Полезные ссылки