Asıl amacım bit kullanıcıyı FTP uygulaması kullanarak sadece bir klasöre dosya yükleyebileceği şekle getirmekdi. Biraz zorladı ama hallettik. Aşamalar aşağıda.
Önce FTP bağlantısı yapacak kullanıcılar için bir group oluşturuyoruz.
# addgroup ftpgroup
Daha sonra kullanıcıların erişeceği bir klasör açalım
# mkdir -p /ftpusers/chroot
Sonra bu klasörü root olarak sahipliğini değiştirelim
# chown root:root /ftpusers/chroot/
Şimdi kullanıcımızı açalım
# adduser hasscript --no-create-home
# mkdir /ftpusers/chroot/hasscript
# chown hasscript:ftpgroup /ftpusers/chroot/hasscript/
# chmod 700 /ftpusers/chroot/hasscript/
Şimdi kullanıcımızı groubumuza ekleyelim
# usermod -G ftpgroup hasscript
Şimdiye kadar herşey iyi gittiyse güzel, keza ben çok uğraştım.
Şimdi de ssh ile gelen istekleri sadece sftp alması için grubumuzu özelleştiriyoruz. Bunu /etc/ssh/sshd_config dosyası içinden yapıyoruz. Basitçe aşağıdaki kodları yapıştırsak tamamdır.
Subsystem sftp internal-sftp
Match Group ftpgroup
ChrootDirectory /ftpusers/chroot/
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
Şu an herşey tamam. systemctl restart sshd diyerek ssh sunucusunu restart ediyoruz.
Bu aşamada artık test etme kaldı.
ssh [email protected] ile bağlantığımız zaman aşağıdaki hatayı almamız gerekiyor.
This service allows sftp connections only.
Şimdi de sftp [email protected] dediğimiz zaman ise
sftp>
satırı ile karşılaşırsak olay tamam. Filezilla gibi bir uygulama üzerinden upload deneyebilirsiniz.
Birsürü kaynak içinden benim kullandığım en açıklayıcı kaynak aşağıdaki adres.
www.tecmint.com/restrict-sftp-user-home-directories-using-chroot/