Я хочу иметь возможность создать структуру для размещения нескольких сайтов. Я хочу, чтобы пользовательские файлы находились внутри /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 на root и /var/www/sites/foobar.com на foobar
Но когда я пытаюсь подключиться через sftp с помощью filezilla, я получаю следующее:
Error: Authentication failed.
Error: Critical error: Could not connect to server
Имя пользователя и пароль, данные filezilla, конечно, верны
Что мне не хватает?
Internal-sftp требует, чтобы chrooted пользовательский дом находился в корневом каталоге:
/ некоторый / путь / принадлежащий root / пользователь-каталог1
У корневого каталога должно быть 555 разрешений, а пользовательские каталоги должны создаваться пользователем root и принадлежать конкретному пользователю. Внутри подкаталогов пользователь может делать что угодно, но не может их удалять или переименовывать.
В вашем случае хороший подход следующий:
/var/www/sites/foobar.com/data
/logs
Дом пользователя - это /var/www/sites/foobar.com/
var
, www
, sites
и foobar.com
должен принадлежать root. Также foobar.com
должно иметь 555 разрешений. data
и logs
подкаталоги должны принадлежать пользователю, а разрешения должны быть достаточно широкими, чтобы позволить httpd
получить к ним доступ.