Вопрос или проблема
Я настраиваю 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 с изоляцией пользователей. Это не только помогает контролировать доступ, но и повышает безопасность системы. При дальнейшем развитии инфраструктуры убедитесь, что вы регулярно проверяете права доступа и обновляете конфигурацию для защиты данных ваших пользователей.