1

Я пытаюсь создать новую учетную запись 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 на 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 ответ1

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .