используйте chroot для ограничения доступа sftp без владельца каталога root

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

Все, что я читаю, говорит о том, что для работы chroot с sftp, root должен владеть папкой. Я хочу сделать так, чтобы пользователь мог подключаться по sftp только к подкаталогу в своей домашней папке, например /home/user/some/folder. Очевидно,

man 8 sftp-server, смотрите:

-d start_directory
         задает альтернативный начальный каталог для пользователей. 
         Путь может содержать следующие токены, которые заменяются во 
         время выполнения: %% заменяется на литерал '%', %d заменяется на 
         домашний каталог пользователя, который проходит аутентификацию, 
         а %u заменяется на имя пользователя этого пользователя. 
         По умолчанию используется домашний каталог пользователя. 
         Этот параметр полезен в сочетании с опцией ChrootDirectory 
         sshd_config(5).

.

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

Для ограничения доступа к SFTP с использованием chroot, не требуя, чтобы корневая директория принадлежала пользователю root, необходимо следовать нескольким шагам. Данная ситуация может возникнуть, когда требуется более гибкое управление доступом, например, для пользователей, которым необходимо предоставление SFTP только к определённым подкаталогам в их домашних директориях.

Шаги для настройки chroot с ограничением доступа к SFTP

1. Настройка SSHD

Первым шагом будет редактирование конфигурации SSH. Откройте файл конфигурации SSH, который обычно располагается по пути /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Найдите и активируйте параметр ChrootDirectory. С помощью этого параметра вы задаете путь, к которому будет зафиксирован пользователь при подключении через SFTP. Вы можете указать /home, как базовую директорию. Это означает, что конкретный пользователь или группа пользователей сможет подключаться только в свою собственную директорию.

Пример конфигурации для указания chroot:

Match User username
    ChrootDirectory /home/username
    ForceCommand internal-sftp
    AllowTcpForwarding no

Замените username на имя пользователя, которому предоставляется доступ.

2. Создание необходимых каталогов

Затем вам необходимо создать необходимую структуру каталогов и задать правильные права доступа. Предположим, что ваш пользователь — username, и вы хотите ограничить его в доступе к /home/username/some/folder. Следуйте этим шагам:

mkdir -p /home/username/some/folder

Проверьте права доступа к /home/username и /home/username/some:

chown root:root /home/username
chmod 755 /home/username

Нужно, чтобы родительская директория username принадлежала пользователю root, и при этом права доступа должны быть установлены так, чтобы другие пользователи могли ее видеть, но не могли записывать. А для каталога /home/username/some/folder, его следует оставить на владельца пользователя:

chown username:username /home/username/some/folder
chmod 755 /home/username/some/folder

Таким образом, пользователь username сможет писать и читать данные в своей директории, в то время как chroot будет предотвращать выход за пределы /home/username.

3. Перезапуск SSH сервиса

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

sudo systemctl restart sshd

Заключение

Теперь, когда вы пытались установить chroot для ограниченного доступа SFTP без необходимости, чтобы корневая директория принадлежала пользователю root, вы можете протестировать вашу настройку, подключившись через SFTP. Пользователь будет видеть только директорию /home/username/some/folder и не будет иметь доступа к другим частям файловой системы.

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

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

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