После частого использования SSH на моем 1,5-недельном Debian 6 VPS я хотел начать загрузку файлов через SFTP. Я уже пробовал это раньше, но с учетной записью root, что больше невозможно с SSH из-за изменений безопасности.
Итак, я сделал отдельного пользователя, позвольте ему позвонить sftpuser на данный момент, кто принадлежит к группе sftp. Он получил специальную запись в sshd_config:
Match Group sftp
ChrootDirectory /var/www
ForceCommand internal-sftp
PasswordAuthentication yes
Итак, ему повезло, и ему не нужен ключевой файл для подключения, но он ограничен / var / www. Что ж, это работает, я могу отлично войти в систему и просмотреть все файлы там. Но поскольку они принадлежат пользователю root, он не может ничего загружать, что делает его совершенно бесполезным.
В своем путешествии по дебрям разрешений для файлов я прочитал много комбинаций восьмеричных чисел и странных обходных путей, но ничего подходящего. Если я правильно понимаю, chmod можно использовать только для того, чтобы сделать каталог доступным для записи определенному пользователю (корень в данном случае), группа (угадайте, что, корень в данном случае \ o /) или другие. «Лучшая» идея, которую мне пришлось решить, не нарушая работы PHP-FPM и nginx, заключалась в том, чтобы добавить sftpuser к корень группа. Хотя я думал, что это будет плохой идеей, это не должно вызвать большого разрушения, так как sftpuser chrooted и не может открыть оболочку. Но это все равно не сработало, я не мог писать ни в какие файлы там, даже с sftpuser в корень группа.
Тем не менее, мне действительно нужна помощь в поиске того, что нужно использовать для моей цели. Я не жду стены текста, как я написал здесь, просто небольшой намек, который укажет мне правильное направление.
Я создал домашний том (назовем его / sftphome) для sftpuser, который должен принадлежать пользователю root и иметь следующие права и права собственности:
/ sftphome
drwxr-xr-x root root
Тогда домашний каталог sftp для sftpuser также должен принадлежать root:
/ sftphome / sftpuser
drwxr-xr-x root root
Затем создайте каталог, в который sftpuser может загружать и скачивать:
/ sftphome / sftpuser / загрузить
drwx------ sftpuser sftpuser
Конечно убедитесь / sftphome правильно настроен:
ChrootDirectory /sftphome
Конечным результатом этого является то, что когда sftpuser входит на сервер sftp, этот пользователь направляется на / sftphome / sftpuser а затем должен выполнить загрузку с компакт-диска, чтобы иметь возможность загружать и скачивать файлы.