# cd /usr/ports/ # make search name='openssh' Port: openssh-portable-5.0.p1,1 Path: /usr/ports/security/openssh-portable Info: The portable version of OpenBSD's OpenSSH Maint: mnag@FreeBSD.org B-deps: R-deps: WWW: http://www.openssh.org/portable.html Port: security/openssh Moved: Date: 2008-03-02 Reason: Has expired: Outdate and has security issues
Нашли то, что нам надо, идем туда, компилируем с такими опциями и устанавливаем.
# cd ./security/openssh-portable # make install clean [X] PAM Enable pam(3) support [X] TCP_WRAPPERS Enable tcp_wrappers support [X] LIBEDIT Enable readline support to sftp(1) [X] KERBEROS Enable kerberos (autodetection) [ ] SUID_SSH Enable suid SSH (Recommended off) [ ] GSSAPI Enable GSSAPI support (req: KERBEROS) [ ] KERB_GSSAPI Enable Kerberos/GSSAPI patch (req: GSSAPI) [X] OPENSSH_CHROOT Enable CHROOT support [ ] OPENSC Enable OpenSC smartcard support [ ] OPENSCPINPATCH Enable OpenSC PIN patch [ ] HPN Enable HPN-SSH patch [ ] LPK Enable LDAP Public Key (LPK) patch [ ] OVERWRITE_BASE OpenSSH overwrite base
Не забудьте прописать в /etc/rc.conf
openssh_enable="YES" #sshd_enable="YES"
Далее редактируем файлы настроек
[color=red]# cd /usr/local/etc/ssh # ls moduli ssh_config-dist ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub sshd_config-dist ssh_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key sshd_config
Открываем файл sshd_config и добавляем куда-нибудь в конец следующие строки.
AllowGroups wheel sftponly # override default of no subsystems Subsystem sftp /usr/local/libexec/sftp-server Match group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
Ну, в wheel вхожу я, ничем не ограниченный, а в группу sftponly входят наши пользователи. Создадим будущему пользователю домашний каталог, куда он и будет кидать свои файлы
# mkdir /usr/local/www/example
А внутри этого каталога еще один
# mkdir /usr/local/www/example/www
Теперь надо правильно добавить пользователя через adduser. Надо включить его в группу sftponly, дать реальную оболочку(например sh),указать правильный домашний каталог(мы его уже создали), ну естественно, пароль.Вернемся к нашим баранам(т.е. домашним каталогам пользователей),зададим правильные права.
# chown -R root /usr/local/www/example # chown -R our_user /usr/local/www/example/www
Все, теперь перезапускаем openssh
#/usr/local/etc/rc.d/openssh restart
И пробуем залогинится под нашим пользователем с какой-нибудь машины. Сам я пользуюсь Filezilla, честно говоря, другие клиенты не смотрел.Виден только домашний каталог, а записать пользователь может только в папку www, что и требовалось сделать.Зайти под ssh этот пользователь не сможет.Ссылки1.http://www.openssh.com/-страница проекта OpenSSH2.http://ru.wikipedia.org/wiki/OpenSSH - страница OpenSSH в Википедии3.http://xgu.ru/wiki/Sftp -Информация о протоколе sftp4.http://www.opennet.ru/opennews/art.shtml?num=14331 - Ссылка на новость о chroot в OpenSSH из Opennet5.http://freebsd.3dn.ru/вhttp://blogs.techrepublic.com.com/opensource/?p=2296.http://www.debian-administration.org/articles/590