Puncte:0

Eroare Chroot SFTP: conductă spartă

drapel at

Actualizare: codul de mai jos a fost actualizat pentru a reflecta modificările identificate în răspunsul marcat și, prin urmare, funcționează conform așteptărilor.

Încerc să stabilesc utilizatori numai SFTP pe serverul meu, care sunt închiși în directorul lor de acasă. Când încerc să mă conectez la server, primesc o eroare de conductă spartă:

debug1: Autentificarea reușită (parolă).
Autentificat la xxxx.xxxxxxxx.com ([XX.XX.XX.XX]:22).
debug2: fd 5 setarea O_NONBLOCK
debug3: fd 6 este O_NONBLOCK
depanare1: canal 0: nou [sesiune-client]
debug3: ssh_session2_open: channel_new: 0
debug2: canal 0: trimite deschis
debug3: trimite pachet: tip 90
debug1: se solicită [email protected]
debug3: trimite pachet: tip 80
debug1: Intrarea în sesiunea interactivă.
debug1: gaj: rețea
debug3: trimite pachet: tip 1
packet_write_wait: Conexiune la portul 22 XX.XX.XX.XX: țeavă spartă
Nu s-a putut citi pachetul: conexiunea a fost resetată de către peer

Am stabilit că acest lucru este legat de încercările mele de a închide utilizatorul. Ale mele sshd_config include:

Subsistem sftp intern-sftp
Grupul de potriviri sftponly
        ForceCommand internal-sftp -d /%u
        Autentificare prin parolă da
        ChrootDirectory /home/sftp
        PermisTunnel nr
        AllowAgentForwarding nr
        AllowTcpForwarding nr
        X11Redirecționare nr

sftponly este numele grupului pe care l-am creat pentru utilizatorii sftp. Proprietarul și grupul de /home/sftp este rădăcină cu numai permisiunea de scriere pentru proprietar (0711).

$ chown root:root /home/sftp
$ chmod 0711 /home/sftp

Iată cum creez utilizatori (în acest exemplu, batman) -- rețineți că fac acest lucru printr-un script Perl, de unde folosesc chpasswd:

$ adduser --quiet --disabled-password --shell /bin/false --no-create-home --gecos "Utilizator" batman
$ echo "batman:batman123" | chpasswd
$ usermod -a -G sftponly batman
$ install -d -m 0755 /home/sftp/batman -o batman -g sftponly

Notă: creez manual directorul de pornire al utilizatorilor, în loc să-l transmit --sistem arg pentru Adăugați utilizator, deoarece ajung să primesc o eroare când încerc mai târziu să schimb proprietarul directorului:

chown: grup nevalid: âbatman:batmanâ

Dacă îmi actualizez sshd_configși schimbați directorul chroot în:

ChrootDirectory /home/sftp

Pot accesa cu succes serverul și nu mai primesc eroarea de conductă spartă. Cu toate acestea, aterizez /home/sftp la conectare, unde văd o listă a tuturor celorlalte directoare de utilizatori, în loc să aterizez /home/sftp/batman asa cum ma asteptam sa se intample.

Cum pot îmbunătăți/remedia acest lucru, astfel încât utilizatorii:

  • au acces doar la propriul director (/home/sftp/batman)
  • la conectare, va apărea a fi în interior / (care este de fapt /home/sftp/batman)
  • nu pot naviga la /home/sftp (astfel încât să nu poată vedea o listă cu alți utilizatori)
Puncte:0
drapel at

Am reușit să realizez acest lucru aplicând aceste permisiuni:

$ chown batman:sftponly /home/sftp/batman
$ chmod 0755 /home/sftp/batman
$ chmod 0711 /home/sftp

Apoi schimbarea ChrootDirectory din /home/sftp/%u la /home/sftp,

Și, în sfârșit, mutați utilizatorul în directorul său principal la conectare:

ForceCommand internal-sftp -d /%u

Acum, când batman se conectează, aterizează /home/sftp/batman, care apare ca /batman către utilizator. Mai important, dacă încearcă să iasă înapoi în /home/sftp, primesc o eroare (prevenindu-i astfel să vadă alte directoare de utilizatori):

Director /: permisiunea refuzată - Nu s-a putut prelua lista de director

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.