benden tavsiye, var olan bir kullanıcıyı değiştirmek yerine önce yeni bir kullanıcı yaratın
useradd myuser
mkdir /home/myuser
usermod -d /home/myuser myuser
passwd myuser
/home/myuser dizinin haklarını ayarlayalım.
chown root:root /home/myuser
chmod 755 /home/myuser
/home/myuser dizinin root:root olması önemli! Eğer myuser:myuser olursa ayrıca sftp çalışmayacaktır! myuser:root veya root:root olması gerekiyor çalışması için güvenlik için root:root yapın.
useradd myuser
mkdir /home/myuser
usermod -d /home/myuser myuser
passwd myuser
/home/myuser dizinin haklarını ayarlayalım.
chown root:root /home/myuser
chmod 755 /home/myuser
/home/myuser dizinin root:root olması önemli! Eğer myuser:myuser olursa ayrıca sftp çalışmayacaktır! myuser:root veya root:root olması gerekiyor çalışması için güvenlik için root:root yapın.
shell atanmasını değiştirelim
usermod -s /bin/false myuser
şimdi sftp erişimi için yeni bir grup oluşturalım
addgroup sftpusers
myuser'ın grubunu değiştirelim
usermod -g sftpusers myuser
şimdi sftp erişimi için yeni bir grup oluşturalım
addgroup sftpusers
myuser'ın grubunu değiştirelim
usermod -g sftpusers myuser
şimdi ssh erişimi deneyelim
ssh myuser@truvakitap.com
Welcome to Ubuntu xxxx
Connection to truvakitap.com closed
kullanıcı önce login oldu "Welcome to Ubuntu" yazısı çıktı sonra shell'i /bin/false olduğu için bağlantıyı kopardı.
Şimdi /etc/ssh/sshd_config dosyasını edit edelim
öncelikle aşağıda ki satırı bulup başına # koyun
#Subsystem sftp /usr/lib/openssh/sftp-server
ve şunu ekleyin
ve şunu ekleyin
Subsystem sftp internal-sftp
Şimdi dosyanın en altına aşağıdaki komutları ekleyin
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ve ssh restart
ve ssh restart
service ssh restart
şimdi ssh erişimini bir daha deneyelim
This service allows sftp connections only.
Connection to truvakitap.com closed.
artık hoşgeldin Ubuntu'dan önce ssh bizi baştan kabul etmeden sadece sftp'ye iizn veriyorum deyip attı.
şimdi ssh yerine sftp komutu deniyelim veya direk bir SFTP istemcisi kullanın örneğin Filezilla'yı kullanabilirsiniz.
sftp myuser@truvakitap.com
sftp>
evet içerdeyiz fakat bir sorun var kullanıcı sistemde ki tüm dizinleri görebilir durumda şu an biz onu kendi /home dizinine hapsetmek istiyoruz.
O zaman aşağıda ki kırmızı satırı ekliyelim.
Match Group sftpusers
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ssh restart yapalım
service ssh restart
tekrar sftp deneyelim vola! artık başka dizinleri gezinme yok!
Şimdi asıl erişim vermek istediğiniz diziniyeni kullanıcının home dizinine bağlamamız gerekiyor.
örneğin ben var olan /var/www/truvakitap/public dizinini bağlayacağım.
yeni bir public dizini oluşturun
mkdir /home/myuser/public
şimdi bağlayalım
mount --bind /var/www/truvakitap/public /home/myuser/public
Şimdi Filezilla'dan ayarları yaptım başarı ile giriş yaptım
Dosya yüklemeyi denedim Filezilla'dan
"Could not transfer" hatası aldım.
truvakitap dizinin hakları www-data:www-data olması problem çıkardı
chmod -R g+s /home/myuser/public
g+s ile yaratılan dosyaların dizinin kendi grubuna ait olmasını sağladık
Şimdi tekrar deneyelim Filezilla'yı.
Dosya transferi başarılı :-)
Yeni oluşan dosyalar muser:www-data olarak oluşacaktır.
Fakat var olan www-data:www-data dosyalarını SFTP üzerine yazamaz. Üzerine de yazsın istiyorsanız
chown -R myuser:www-data /home/myuser/public yaptığımızda artık
/var/www/truvakitap/public altında ki dosyalar www-data:www-data'dan myuser:www-data dönüşür ve üzerine yazabilirsiniz.
tekrar sftp deneyelim vola! artık başka dizinleri gezinme yok!
Şimdi asıl erişim vermek istediğiniz diziniyeni kullanıcının home dizinine bağlamamız gerekiyor.
örneğin ben var olan /var/www/truvakitap/public dizinini bağlayacağım.
yeni bir public dizini oluşturun
mkdir /home/myuser/public
şimdi bağlayalım
mount --bind /var/www/truvakitap/public /home/myuser/public
Şimdi Filezilla'dan ayarları yaptım başarı ile giriş yaptım
Dosya yüklemeyi denedim Filezilla'dan
"Could not transfer" hatası aldım.
truvakitap dizinin hakları www-data:www-data olması problem çıkardı
chmod -R g+s /home/myuser/public
g+s ile yaratılan dosyaların dizinin kendi grubuna ait olmasını sağladık
Şimdi tekrar deneyelim Filezilla'yı.
Dosya transferi başarılı :-)
Yeni oluşan dosyalar muser:www-data olarak oluşacaktır.
Fakat var olan www-data:www-data dosyalarını SFTP üzerine yazamaz. Üzerine de yazsın istiyorsanız
chown -R myuser:www-data /home/myuser/public yaptığımızda artık
/var/www/truvakitap/public altında ki dosyalar www-data:www-data'dan myuser:www-data dönüşür ve üzerine yazabilirsiniz.