Na ogół nic nie trzeba robić, gdyż jeśli jest uruchomiony serwer SSH, to uruchomiony jest też serwer SFTP. Możesz się o tym przekonać łącząc się z hostem po protokole SFTP za pomocą programu WinSCP i podając ten sam login i hasło co łącząc się z serwerem SSH, np. w Putty.
Teraz zajmiemy się kwestią jak zabezpieczyć konto SFTP, gdy chcemy je udostępnić innym osobom do wymiany plików. Na potrzeby niniejszej dokumentacji zakładamy, że jest już utworzony użytkownik z własnym katalogiem domowym.
Po pierwsze ograniczamy mu dostęp tylko do katalogu domowego.
/etc/ssh/sshd_config
Subsystem sftp internal-sftp # Wykomentowujemy istniejący Subsystem Match User [użytkownik] ChrootDirectory %h AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp
Dodatkowo katalog użytkownika musi być własnością roota. Może to trochę nieintuicyjne, ale inaczej nie zadziała.
chown root /home/[użytkownik] chmod og-w /home/[użytkownik]
Użytkownik root musi być właścicielem katalogu nawet, jeżeli jest to katalog domowy użytkownika. Ponadto uprawnienia nie mogą być szersze niż 755. W innym przypadku serwer w ogóle nie pozwoli się zalogować. Dlatego zaleca się utworzenie podkatalogu, którego użytkownik będzie właścicielem, np. ftp z pełnymi uprawnieniami dla użytkownika.
Po drugie zabraniamy korzystania z konsoli.
usermod --shell /bin/false [użytkownik] service ssh restart
I to wszystko, żadnych dodatkowych instalacji, czy konfiguracji. Artykuł oparty na Programowo.
Program rssh (restricted shell)
apt-get install rssh usermod --shell /usr/bin/rssh [użytkownik]
/etc/rssh.conf
#Użytkownik:maska plików:uprawnienia:katalog chroot (opcjonalny) user=[użytkownik]:022:111111:/home/[użytkownik]
Program vsftpd.
apt-get install vsftpd # Instalacja service vsftpd restart # Restart
Plik konfiguracyjny znajduje się w /etc/vsftpd.conf. Po instalacji włączamy następujące opcje:
local_enable=YES write_enable=YES chroot_local_user=YES #pam_service_name=vsftpd
pam_service_name=vsftpd należy wykomentować, żeby zezwolić na logowanie użytkowników nie-shellowych.