FTP через SSH chroot-права

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

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

 /var/uploads/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: I ' m использую инстанс Amazon EC2 в качестве своего веб-сервера, и на нем работает AMI Amazon Linux.

1
задан 5 April 2017 в 09:45
1 ответ

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

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

Некоторые вещи, которые я узнал:

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

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

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

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

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

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

2
ответ дан 3 December 2019 в 20:25

Теги

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