Как заблокировать вниз пользователя SFTP?

Я действительно нуждаюсь в некоторой помощи, я пытался заключить в тюрьму пользователя, использующего ubuntu.

Вещь отметить:

  1. james пользователь
  2. sshusers группа
  3. /home/james/upload/ каталог, где я хочу заблокировать пользователя

sshd_config:

AllowGroups sshusers 

Match Group sshusers
    ChrootDirectory /home/%u/upload/
    ForceCommand internal-sftp

Я следовал ответу на askubuntu, вот мои команды

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

Проблема:

Я получаю эту ошибку

Error:  Network error: Software caused connection abort
Error:  Could not connect to server

Я занялся расследованиями в журналах, и я нашел это:

фатальный: плохое владение или режимы для chroot компонента каталога "/home/james/upload /"

Но если я выполняю следующие команды

sudo chown root /home/james/upload
sudo chmod go-w /home/james/upload

Это работает прекрасное, пользователь может соединиться, папка заблокирована, НО не может отбросить файлы в каталоге

Status: Listing directory /
Status: Directory listing successful
Status: Starting upload of C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm
Command:    put "C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm" "test"
Error:  /test: open for write: permission denied
Error:  File transfer failed

Совет, у меня есть поисковый Google так, все ссылки являются фиолетовыми теперь (посещаемый :P)

Я использую filezilla клиент для тестирования SFTP.

2
задан 13 April 2017 в 15:24

2 ответа

ChrootDirectory директива ожидает, что chroot каталог принадлежит root, и не перезаписываемый кем-либо еще. Таким образом, Вы не можете заключить в тюрьму пользователя к каталогу и позволить полномочиям пользователя записать в тот каталог. Вы можете:

Chroot для размещения загрузите на upload/

Первый набор команд, которые Вы попробовали, корректен для этого:

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

Однако опция в sshd_config был бы:

Match Group sshusers
    ChrootDirectory %h
    ForceCommand internal-sftp

(%h заменяется корневым каталогом пользователя, аутентифицируемого, эквивалентного /home/%u для большинства случаев.), Кроме того, для ограничения видимости папок в /home/james, и ограничьте разрешение записи там, используйте рекурсивные опции для chown и chmod в первой команде для /home/james, и удалите read полномочия. Измененный набор был бы похож:

sudo chown root /home/james -R 
sudo chmod go-rwx /home/james -R  # Disallow traversing any directory in home 
sudo chmod go+x /home/james       # Allow traversing this directory
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwx /home/james/upload

Теперь пользователь должен только смочь получить доступ /home/james/upload, или /upload.

Chroot для загрузки загрузите на upload/some_directory

В значительной степени то же как выше, заменяя /home/james/ с /home/james/upload, и /home/james/upload с /home/james/upload/some_directory. Никакие конкретные усиления.

Измените корневой каталог james кому: /upload

Обычное поведение ChrootDirectory: "После chroot, sshd (8) изменения рабочий каталог к корневому каталогу пользователя". Таким образом, мы изменяемся jamesкорневой каталог:

usermod -d /upload  user

Затем установите ChrootDirectory кому: /home/%u. Используйте те же ограничения в первой опции.

3
ответ дан 2 December 2019 в 03:00

Встроенный sftp chroot механизм в OpenSSH требует, чтобы chroot каталог принадлежал корню (и не перезаписываемый пользователями). Это могло быть болью, если бы каталог является долей SMB/CIFS, например, где необходимо было бы сделать, связывают, монтируются.

Одно из более гибкого решения состояло бы в том, чтобы использовать MySecureShell (http://mysecureshell.readthedocs.io/en/latest/)

apt install mysecureshell

Это работает без любой модификации к Вашим настройкам OpenSSH по умолчанию. Все, что необходимо сделать, заставляют пользователя SFTP войти в оболочку к mysecureshell, и это будет заботиться о ACL chroot / виртуальном chroot для Вас. См. документацию для получения дополнительной информации

Например, после того как Вы установили MySecureShell, можно затем добавить пользователя SFTP (ограниченный их корневым каталогом) как ниже,

sudo useradd -m -d /home/sftpuser01 --shell /usr/bin/mysecureshell sftpuser01

От вышеупомянутого пользователь 'sftpuser01' получит виртуальный chrooted к '/home/sftpuser01' на сессии SFTP.

Это также предоставляет много гибких возможностей управлять ACL, группа и т.д. путем конфигурирования '/etc/ssh/sftp-config'. См. http://mysecureshell.readthedocs.io/en/latest/configuration.html для деталей.

0
ответ дан 2 December 2019 в 03:00

Другие вопросы по тегам:

Похожие вопросы: