Настройка SFTP с несколькими пользователями

Вопрос или проблема

Я настраиваю SFTP на машине с Linux. Ниже приведены некоторые детали существующей структуры папок:

/var/home/outbound/
/var/home/outbound/user1
/var/home/outbound/user2
/var/home/outbound/user3

Я создал группу sftpusers и добавил пользователей 1, 2 и 3. Домашний каталог для каждого пользователя выглядит следующим образом:

Для user1: /var/home/outbound/user1
Для user2: /var/home/outbound/user2
Для user3: /var/home/outbound/user3

Я обновил файл конфигурации SSHD, добавив следующие данные:

Match Group sftpusers
    ChrootDirectory /var/home/outbound
    ForceCommand internal-sftp
    PasswordAuthentication yes
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

Каждый раз, когда пользователь пытается подключиться по SFTP, он будет помещен в папку /var/home/outbound (так как это установлено как ChrootDirectory) и сможет выполнять cd во все папки в каталоге outbound. Но у меня есть требование, чтобы user1 мог подключаться по SFTP только в свою конкретную папку – /var/home/outbound/user1, а user2 – только в свою конкретную папку – /var/home/outbound/user2 и так далее.

Я также попробовал следующие варианты в файле конфигурации SSHD:

Вариант 1:

Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    PasswordAuthentication yes
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

Вариант 2:

Match Group sftpusers
    ChrootDirectory /var/home/outound/%u
    ForceCommand internal-sftp
    PasswordAuthentication yes
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

В обоих случаях я получил следующую ошибку:

fatal: bad ownership or modes for chroot directory "/var/home/outbound/user1" [postauth]

Как мне обновить файл конфигурации SSHD, чтобы это учесть?

Ответ или решение

Для настройки SFTP на вашем Linux-сервере с несколькими пользователями и с использованием изолированных домашний директорий для каждого пользователя, необходимо учитывать некоторые важные аспекты конфигурации SSHD и разрешений на файлы. Рассмотрим шаги для корректной реализации вашей задачи.

1. Настройка структуры каталогов

Для начала убедитесь, что у вас правильная структура каталогов для каждого пользователя. Вы уже создали необходимые каталоги:

/var/home/outbound/
    ├── user1
    ├── user2
    └── user3

Каждый из этих каталогов должен быть помещен в отдельную директорию для создания подходящей среды chroot. Ваша текущая структура правильна, и следует убедиться, что каталог /var/home/outbound имеет корректные разрешения.

2. Установить правильные разрешения

Одной из распространенных причин ошибки fatal: bad ownership or modes for chroot directory является неправильное управление правами на каталоги. Убедитесь, что:

  • Корневой каталог для chroot (в вашем случае /var/home/outbound) должен принадлежать пользователю root и иметь права доступа 755.
  • Подкаталоги для каждого пользователя должны принадлежать соответствующим пользователям и могут иметь права 700.

Примените следующие команды для изменения прав и владельцев:

sudo chown root:root /var/home/outbound
sudo chmod 755 /var/home/outbound

sudo chown user1:user1 /var/home/outbound/user1
sudo chmod 700 /var/home/outbound/user1

sudo chown user2:user2 /var/home/outbound/user2
sudo chmod 700 /var/home/outbound/user2

sudo chown user3:user3 /var/home/outbound/user3
sudo chmod 700 /var/home/outbound/user3

3. Обновление конфигурации SSHD

Теперь нужно обновить файл конфигурации SSHD. Чтобы пользователи при подключении через SFTP сразу попадали в свои домашние каталоги, отредактируйте файл /etc/ssh/sshd_config следующим образом:

Match Group sftpusers
    ChrootDirectory /var/home/outbound
    ForceCommand internal-sftp
    PasswordAuthentication yes
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no
    PermitRootLogin no

Обратите внимание, что здесь мы используем настройку ChrootDirectory /var/home/outbound, которая должна корректно работать, при условии, что права установлены, как указано выше. Члены группы sftpusers будут помещены в этот каталог, где не смогут поднять уровень доступа.

4. Пер перезапуск SSHD

После внесения изменений в конфигурационный файл, необходимо перезапустить SSH-демон:

sudo systemctl restart sshd

5. Подключение пользователей

Теперь пользователи user1, user2 и user3 могут подключаться к SFTP с помощью своих учетных данных и будут изолированы в своем каталоге. Каждый из них будет видеть только свой каталог и у них не будет доступа к другим директориям.

Заключение

Следуя вышеуказанным шагам, вы настроите SFTP на вашем сервере с полным соответствием требованиям безопасности и функциональности. Не забывайте регулярно проверять логи /var/log/auth.log для выявления возможных проблем с подключением. Надеюсь, эта информация окажется полезной для успешной реализации вашей задачи.

Оцените материал
Добавить комментарий

Капча загружается...