cat /etc/passwd
1 2 |
ftp:x:107:65534::/srv/ftp:/bin/false sftp_user:x:1001:1003::/home/sftp_user:/bin/sh |
cat /etc/group
(чтобы sftp_user получил доступ к папке сайта в корне, он также находится в группе www-data)
1 2 |
sftp_group:x:1002:sftp_user sftp_user:x:1003:www-data |
Ставим 755 на директории public_html и www и делаем рута владельцем (“…All components of the pathname must be root-owned directories that are not writable by any other user or group…”, такое же требование есть у ftpd-серверов в случае с пользовательским chroot):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
root@web:~# ls -la /var/ итого 56 drwxr-xr-x 14 root root 4096 Дек 16 12:34 . drwxr-xr-x 23 root root 4096 Мар 3 13:13 .. drwxr-xr-x 4 root www-data 4096 Мар 2 14:48 public_html root@web:~# ls -la /var/public_html/ итого 16 drwxr-xr-x 4 root www-data 4096 Мар 2 14:48 . drwxr-xr-x 14 root root 4096 Дек 16 12:34 .. drwxr-xr-x 2 www-data www-data 4096 Дек 28 09:48 pub drwxr-xr-x 4 root www-data 4096 Мар 3 13:24 www root@web:~# ls -la /var/public_html/www/ итого 16 drwxr-xr-x 4 root www-data 4096 Мар 3 13:24 . drwxr-xr-x 4 root www-data 4096 Мар 2 14:48 .. drwxrwsr-x 8 www-data www-data 4096 Мар 4 12:15 sap.ru |
После входа по SFTP, SSHD меняет эффективного пользователя на залогинившегося – работает не от рута (т.е. выполнивший вход не сможет писать в корень www или уйти выше).
Добавляем в конец sshd_conf
1 2 3 4 5 6 7 |
Subsystem sftp internal-sftp Match Group sftp_group X11Forwarding no AllowTCPForwarding no AllowAgentForwarding no ForceCommand internal-sftp ChrootDirectory /var/public_html/www/ |
P.S. Скачать пересобранный vsftpd 2.3.5 с опцией allow_writeable_chroot=YES:
vsftpd_2.3.5-10~update.1_amd64
vsftpd_2.3.5-10-update.1_i386