Назад | Перейти на главную страницу

FTP через SSH разрешения chroot

Я пытаюсь создать каталог для загрузки на своем сервере, и мне очень трудно это сделать. Загрузки в каталог должны быть доступны для всех других пользователей системы, но учетная запись пользователя, которая будет использоваться для загрузки, не должна иметь доступа вообще (кроме загрузки, то есть), поэтому я изменяю учетную запись uploaduser только в свой каталог. Я использую FTP через SSH из соображений политики, и у меня следующая настройка:

ЗАГРУЗИТЬ КАТАЛОГ:

 /var/uploads/uploaduser/

(Я использую это, потому что учетная запись uploaduser не является обычной учетной записью и не должна рассматриваться как таковая; однако я широко открыт для других предложений относительно того, как это сделать.)

Разрешения устанавливаются следующим образом:

/var/
drwxr-xr-x  25 root root  4096 Mar 30 10:04 var/

/var/uploads
drwxr-xr-x  3 root root 4096 Mar 23 12:22 uploads/

/var/uploads/uploaduser
drwx---r-x  3 root root 4096 Apr  4 10:14 uploaduser/

Теперь, когда я использую FileZilla или любой другой клиент для загрузки файлов в каталог uploaduser, я получаю ошибку «доступ запрещен». ОДНАКО, если я изменю владельца каталога uploaduser или изменю его разрешения, я получаю эту ошибку:

Couldn't read packet: Connection reset by peer

Кажется, это ситуация типа «будь проклят, если не сделаешь».

У меня есть следующая настройка в /etc/ssh/sshd_config:

Match user uploaduser
ChrootDirectory  /var/uploads/destiny/
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp

Я использую VSFTP, и он отлично работает для всех других приложений, использующих FTP через SSH.

ETA: Я использую экземпляр Amazon EC2 в качестве своего веб-сервера, и на нем работает AMI Amazon Linux.

Я просто учусь этому прямо сейчас и думаю, что у меня только что есть горб, к которому вы пришли.

Во-первых, ваш каталог загрузки не соответствует вашему ChrootDirectory. Я предполагаю, что это опечатка.

Я пришел научиться некоторым вещам:

  • VSFTP не используется при настройке SFTP
  • SFTP - это SSH, использующий SSH, встроенный в SFTP (internal-sftp)

Теперь используя ChrootDirectory...

  • Путь должен существовать
  • Каталог должен иметь корень пользователь и группа (root: root)
    • Что твое делает
    • Из-за этого пользователь SFTP не может напишите что-нибудь в этом каталоге
  • Создайте другой каталог внутри ChrootDirectory называется content (например)
    • Этот каталог должен иметь загрузчик (Пользователь SFTP) как пользователь и группа (uploaduser: uploaduser)
    • Я думаю, это та часть, которую тебе не хватает
  • Вы можете изменить свою исходную структуру каталогов, поскольку загруженный контент теперь будет в /var/uploads/uploaduser/content

Насколько я понимаю ...

  • Пользователь не сможет выйти из ChrootDirectory
    • Я думаю, также известный как тюрьма!
  • Я не нашел способа создать тюрьму, в которой корень тюрьмы доступен для записи (пока)
  • Я задумал предоставить пользователю доступ к текущему каталогу root: root, но он все равно сможет видеть весь контент
    • Если бы я использовал /home они смогут видеть все пользовательские каталоги (правда, без прав доступа)

Надеюсь это поможет. Если кто-нибудь знает, как сделать тюрьму доступной для записи, мне было бы интересно узнать!