Почему мой новый пользователь SFTP не работает в другом каталоге?

Почему мой новый пользователь SFTP не работает в другом каталоге?

Я пытаюсь создать новую учетную запись SFTP для моего сервера. Когда я следую этим инструкциямточно, то все работает нормально:https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Я могу подключиться к guestuserпользователю через sftp, просмотреть свой домашний каталог и перейти на один уровень вверх incomingв /sftp/guestuser.

Я даже могу изменить ChrootDirectoryзначение в /etc/ssh/sshd_configспециально /sftp/guestuser, чтобы оно было , вместо реализации %uпараметра. Поэтому жестко закодированные имена каталогов работают нормально.

Но с этого момента, если все, что я делаю, это меняю ChrootDirectoryсвою sftpusersгруппу на каталог моего фактического веб-сайта на /var/www/www.example.com, то я больше не могу подключиться через sftpкоманду для этого пользователя. Оболочка выводит:

Подключение к www.example.com закрыто удаленным хостом. Не удалось прочитать пакет: подключение сброшено узлом

Я определенно это сделал:

  1. Убедитесь, что incomingпапка находится в моем /var/www/www.example.comкаталоге.
  2. Установите право собственности на оба /var/www/www.example.comи /var/www/www.example.com/incomingнаguestuser:sftpusers
  3. Попробовал установить домашний каталог пользователя, /выполнив командуusermod guestuser -d /

Каталог /sftp/guestuser(тот, с которым он работал) принадлежит root:root, поэтому тот факт, что разрешения /var/wwwвключены, root:rootне должен иметь значения(?)

Почему я не могу изменить домашний каталог моего нового пользователя SFTP?

ОБНОВЛЯТЬ

Я могу изменить каталог на:

  • /sftp
  • /
  • /var
  • /var/www

Все это работает. Но как только идет еще один под /var/www, например /var/www/test, это не работает. Я пробовал убрать точки из исходного имени каталога, которое было www.example.com, но это не помогло.

Речь не идет об ограничении количества уровней подкаталогов, потому что /sftp/guestuser/incomingтоже работало. Тестирование с новым каталогом /web/www.example.comне дало результата.

решение1

Хорошо, мне удалось определить причину. Каталог, который я определяю как ChrootDirectoryдля пользователя, должен принадлежать root.

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

Если в какой-то момент владелец изменится так, что ChrootDirectoryбудет принадлежать тому пользователю, который пытается подключиться к нему по ftp, сообщение broken pipeпоявится снова. Измените владельца обратно на root, и пользователь снова сможет подключиться.

Связанный контент