Я хочу смочь создать структуру для хостинга нескольких сайтов. Я хочу, чтобы пользовательские файлы находились в /var/www/sites/domain.com и sftp доступе, который будет ограничен с chroot.
Я последовал некоторым примерам о том, как настроить это, и это - то, что я сделал до сих пор:
Добавленный новый пользователь, набор корневой каталог и группа:
useradd foobar -d /var/www/sites/foobar.com -g sftp
Внутри /etc/ssh/sshd_config
Я добавил:
Match Group sftp
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
и перезапущенный сервис
Я настроил /etc/vsftpd/vsftpd.conf
включать следующие изменения:
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
и перезапущенный vsftpd
Я установил владение/var/www/sites для укоренения и /var/www/sites/foobar.com к foobar
Но когда я пытаюсь соединиться через sftp, использующий filezilla, я получаю это:
Error: Authentication failed.
Error: Critical error: Could not connect to server
Имя пользователя и пароль, данный filezilla, корректны, конечно,
Что я пропускаю?
Internal-sftp требует, чтобы корневой пользователь проживал внутри корневого dir:
/some/path/root- belonger/user-dir1
Корневой dir должен иметь 555 разрешений, а пользовательские dir должны быть созданы корневым пользователем и принадлежать конкретному пользователю. Внутри subdirs пользователь может делать что угодно, но не может удалять или переименовывать их.
В вашем случае хорошим подходом будет следующий:
/var/www/sites/foobar.com/data
/logs
Домашний адрес пользователя - /var/www/sites/foobar.com/
var
, www
, сайты
и foobar.com
должны принадлежать root'у. Также foobar.com
должен иметь 555 разрешений. Данные
и журналы
должны принадлежать пользователю, а разрешения должны быть достаточно широкими, чтобы разрешить доступ к ним httpd
.