Настройка 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 должен иметь возможность входить по SFTP только в свою конкретную папку – /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

Если вы настраиваете SFTP на вашей системе Linux и хотите, чтобы каждый пользователь имел доступ только к своей директории, вам нужно будет правильно настроить sshd (SSH Daemon) и соблюсти некоторые важные требования по безопасности. Давайте рассмотрим шаги, необходимые для достижения этой цели.

1. Установка структуры каталогов

Убедитесь, что у вас есть следующая структура каталогов для каждого пользователя:

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

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

Вы уже создали группу sftpusers и добавили пользователей user1, user2 и user3. Это корректно.

3. Установка прав доступа

Ключевые моменты, касающиеся прав доступа и владельцев директорий, имеют значение. Папка, указанная в ChrootDirectory, должна быть владельцем root и иметь определенные права доступа:

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

Каждая директория пользователя должна быть собственностью этого пользователя:

sudo chown user1:sftpusers /var/home/outbound/user1
sudo chown user2:sftpusers /var/home/outbound/user2
sudo chown user3:sftpusers /var/home/outbound/user3

Убедитесь, что права доступа к директориям пользователей соответствуют требованиям:

sudo chmod 700 /var/home/outbound/user1
sudo chmod 700 /var/home/outbound/user2
sudo chmod 700 /var/home/outbound/user3

4. Настройка конфигурации SSHD

Чтобы каждый пользователь использовал свою собственную директорию, вы можете использовать параметр %u.

Измените ваш файл конфигурации SSHD, добавив следующие строки:

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

Эта конфигурация позволяет ресурсам каждого пользователя быть изолированными в их собственных директориях.

5. Перезагрузка SSHD

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

sudo systemctl restart sshd

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

Теперь, когда вы настроили все нужные параметры, пользователи могут подключаться к своему SFTP с использованием:

sftp user1@your_server_ip

Пользователи будут помещены в свои собственные каталоги и не смогут перемещаться за пределы этих каталогов.

Заключение

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

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

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