SFTP - разрешить пользователю загружать только на www
Ubuntu Server 12.04
Мне нужно разрешить пользователю offlineuser
загружать файлы в var/www/mysite/web/
только каталог. Этот каталог действует как корень сайта, а также как место загрузки (устаревшая настройка).
В моем /etc/ssh/sshd_config
файл:
Со следующим закомментированным, они могут загрузить куда угодно. Как только я раскомментирую это, они вообще не смогут подключиться.
AllowUsers offlineuser ubuntu
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /var/www/mysite/web/%u
ForceCommand internal-sftp
PasswordAuthentication no
X11Forwarding no
AllowTcpForwarding no
offlineuser является членом группы sftponly
Это было взято из: Chroot SFTP соединение и OpenSSH SFTP chroot() с ChrootDirectory
Update1
:pam_unix(sshd:session): session opened for user offlineuser by (uid=0)
: fatal: bad ownership or modes for chroot directory component "/var/www/mysite/"
: pam_unix(sshd:session): session closed for user offlineuser
Итак, это довольно ясно, но действительно ли мне нужно прервать каталог для offlineuser? Не вызовет ли это проблем, если www-data хочет написать в него (что вероятно?)
2 ответа
Из справочной страницы sshd_config:
Указывает путь к каталогу для chroot(2) после аутентификации. Все компоненты пути должны быть корневыми каталогами, которые не доступны для записи любому другому пользователю или группе. После chroot sshd(8) меняет рабочий каталог на домашний каталог пользователя.
Кажется, что все родительские каталоги должны быть доступны для записи только как root, даже для SFTP. Если это невозможно, я бы предложил переместить каталог в другое место (например, /home/web/offlineuser
), а затем символическая ссылка / привязка монтирует его на место.
Если вы измените каталог chroot на
ChrootDirectory /var/www/mysite/web/
и затем предоставьте пользователю домашний каталог / testuser в /etc/passwd, тогда у вас может быть /var/www/mysite/web/ правильно принадлежащий root, а /var/www/mysite/web/testuser может принадлежать и записываться TestUser.