Sftp sadece SSH kullanıcılarını evlerine nasıl chroot edebilirim?

111

Sunucuma istemci erişimi vermek istiyorum, ancak bu kullanıcıları ev dizinlerine sınırlamak istiyorum. Görebilmeleri için istediğim dosyalara bağlanacağım.

bob adlı bir kullanıcı oluşturdum ve onu sftponly adlı yeni bir gruba ekledim. % Co_de% adresindeki bir ana dizinleri var. SSH girişlerini durdurmak için kabuklarını /home/bob olarak değiştirdim. İşte /bin/false satırı:

bob:x:1001:1002::/home/bob:/bin/false

Ayrıca aşağıdakileri eklemek için /etc/passwd değerini değiştirdim:

Match Group sftponly
        ChrootDirectory /home/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no

Onlar gibi giriş yapmayı denediğimde, burada gördüğüm şey

$ sftp [email protected]
[email protected]'s password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer

Eğer /etc/ssh/sshd_config satırını yorumluyorsam, SFTP'yi yapabilirim ama sonra sunucu üzerinde serbestçe dizim yapabilirler. % Co_de% 'nin çalıştığını buldum, ancak hala herhangi bir giriş dizinine erişmelerini sağlıyor. Açıkça ChrootDirectory denedim ancak bu da çalışmıyor.

Neyi yanlış yapıyorum? % Co_de% 'sini ChrootDirectory /home ile nasıl sınırlandırabilirim?

---- DÜZENLEME -----

Tamam, bu yüzden ChrootDirectory /home/bob 'a bir göz attım ve bunu gördüm:

May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May  9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob

Orada neler olup bittiğinden emin değilim, ama kullanıcı dizini ile ilgili bir sorun olduğunu gösteriyor. İşte bob çıktı:

drwxr-xr-x 26 oli      oli      4096 2012-01-19 17:19 oli
drwxr-xr-x  3 bob      bob      4096 2012-05-09 14:11 bob
    
sordu Oli 09.05.2012 15:43

3 cevap

111

Tüm bu acı, burada açıklanan . Temel olarak chroot dizininin root 'sine sahip olması ve herhangi bir grup-yazma erişimi olmaması gerekir. Güzel. Bu nedenle, chroot'unuzu bir tutucu hücreye dönüştürmeniz gerekir ve içinde, düzenlenebilir içeriğiniz olabilir

.
sudo chown root /home/bob
sudo chmod go-w /home/bob
sudo mkdir /home/bob/writable
sudo chown bob:sftponly /home/bob/writable
sudo chmod ug+rwX /home/bob/writable

Ve bam, giriş yapabilir ve /writable yazabilirsiniz.

    
verilen cevap Oli 09.05.2012 16:21
52

Bir SFTP dizinini chroot yapmak için

yapmanız gerekir
  1. Bir kullanıcı oluşturun ve sahibi olmak için root'yu zorlayın

    cd /home
    mkdir john
    useradd -d /home/john -M -N -g users john
    sudo chown root:root /home/john
    sudo chmod 755 /home/john
    
  2. / etc / ssh / sshd_config üzerindeki alt sistem konumunu değiştirin:

    #Subsystem sftp /usr/lib/openssh/sftp-server
    Subsystem sftp internal-sftp
    

    ve dosyanın sonunda bir kullanıcı bölümü oluşturun (Subsystem satırından sonra yerleştirildiğinde ssh yeniden canlanabilir):

    Match User john
        ChrootDirectory /home/john
        ForceCommand internal-sftp
        AllowTCPForwarding no
        X11Forwarding no
    
verilen cevap josircg 25.10.2012 19:54
4

Bütün günümü ahudududa bir ağ paylaşımı yapmaya harcadım. Tüm dosya sisteminde gezinemeyeceği, ssh giriş erişiminin olmadığı ve ağ paylaşımına yazma erişiminin olmasını istediğim için kullanıcıyı kilitlemek istedim.

Ve işte çalışıyorum:

İlk önce bir kullanıcı oluşturdum:

sudo useradd netdrive

Ardından, /etc/passwd 'sini düzenledik ve kullanıcı için /bin/false değerine sahip olduğundan emin olduk. Bu nedenle satır:

netdrive:x:1001:1004:Net Drive User,,,:/home/netdrive:/bin/false

Eklenecek /etc/ssh/sshd_config 'si düzenledim:

Match User netdrive
  ChrootDirectory /home/netdrive
  ForceCommand internal-sftp
  AllowTcpForwarding no
  X11Forwarding no

Ana dizin sahibi ve izinleri değiştirildi:

sudo chown root:root /home/netdrive/
sudo chmod 755 /home/netdrive/

Tamam, bundan sonra sshfs kullanarak ancak salt okunur modda bağlanabildim. Yazılabilir bir klasör almak için ne yapmam gerekiyordu:

sudo mkdir -p /home/netdrive/home/netdrive/
sudo chown netdrive:netdrive /home/netdrive/home/netdrive/
sudo chmod 755 /home/netdrive/home/netdrive/

Öyleyse, daha fazla değişiklik yapmadan çalıştı. Çevrimiçi olarak diğer birçok çözüm için gruba değil, kullanıcı için yalnızca yazılabilir izinler olduğumu unutmayın. Dosyaları / klasörleri sorunsuz bir şekilde oluşturabilir / silebilir / düzenleyebilir / yeniden adlandırabilirim.

chroot yapılandırması nedeniyle netdrive kullanıcısı ile sshfs kullanarak erişirken, yalnızca sunucunun /home/netdrive/ dizininde saklanan şeyleri görürdüm, mükemmel. Yinelenen /home/netdrive/home/netdrive/ dizin yapısı, temiz bir chroot ssh yazılabilir çözümünün benim için çalışmasını sağlayan şeydir.

Şimdi elimdeki sorunları açıklayacağım:

Muhtemelen aşağıdaki paragrafları uygulamamanız gerekir :

Yukarıdaki çözümlere baktıktan sonra (ve hatta netde kullanılan acl (erişim kontrol listeleri)) pek çok kişi Bunu çalışmaya devam edemedim çünkü daha sonra ne yaptım:

Aşağıdakiler NOT çalışmamı yaptı:

sudo mkdir /home/netdrive/writable/
sudo chown netdrive:netdrive /home/netdrive/writable/
sudo chmod 755 /home/netdrive/writable/

netdrive kullanıcısı, klasöre sahip olmasına ve izinlere sahip olmasına rağmen, bu /home/netdrive/writable/ dizininde hala yazamadı. Sonra yaptım:     sudo chmod 775 / home / netdrive / yazılabilir / Ve şimdi bir dizin oluşturabilir ve silebilirdim, ancak grup yazılabilir izinleri olmadan oluşturulduğundan bunu düzenleyemedim. İşte net insanlarda gördüğüm şeyden, onu düzeltmek için acl kullanıyorum. Ama bundan memnun değildim çünkü acl 'yi yüklemek zorunda kaldım, sonra da montaj noktalarını yapılandırabiliyordum. Ayrıca, sahip olduğum bir klasöre yazmak için neden grup iznine ihtiyacım olduğu konusunda hiçbir fikrim yok. aynı kullanıcı.

Bazı nedenlerden dolayı /home/netdrive/home/netdrive oluşturup son netdrive klasörüne sahip olma özelliğini vererek, her şeyi grup izinleriyle uğraşmadan çalışmayı başardım.

    
verilen cevap mihai.ile 18.07.2015 19:58

Etiketlerdeki diğer soruları oku