
Ich habe ein halbes Dutzend verschiedener Tutorials zum Einrichten von Chroot für SFTP-Benutzer befolgt, aber meine inhaftierten Benutzer können immer noch in übergeordnete Verzeichnisse blättern. Ich vermute, dass meine Berechtigungen nicht richtig eingerichtet sind, da dies der Teil ist, der zwischen den Tutorials am meisten variiert. Folgendes habe ich bisher getan:
1) Ich verwende CentOS 5.6, wo die Standard-OpenSSH-Version 4.3 ist, daher habe ich die neueste 5.x-Version manuell installiert. Das Ausführen von sshd -v gibt jetzt OpenSSH_5.9p1, OpenSSL 0.9.8e-fips-rhel5 zurück.
2) Ich habe /etc/ssh/sshd_config bearbeitet, um Subsystem-SFTP in internes SFTP zu ändern, und Folgendes hinzugefügt:
Match user guest
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
3) SSHD neu gestartet.
4) Erstellt einen Benutzer „Gast“ mit dem Home-Verzeichnis /var/www/uploads/guest.
5) /var/www/uploads gehört root:root mit Modus 755.
6) /var/www/uploads/guest ist Eigentum von guest:root im Modus 755.
Ich habe mich mit dem Transmit-SFTP-Client auf meinem Mac als Gastbenutzer angemeldet. Standardmäßig wird das Home-Verzeichnis des Benutzers geöffnet, aber ich kann dann in den Verzeichnisebenen nach oben navigieren und andere Verzeichnisse auf dem Server durchsuchen.
Einige Tutorials sagen, dass /var/www/uploads den Modus 700 oder 750 haben sollte. Wenn ich dies tue, kann ich mich zwar immer noch als Gastbenutzer anmelden, sehe aber standardmäßig das Stammverzeichnis des Servers und kann alle anderen Verzeichnisse durchsuchen.
In anderen Tutorials heißt es, ich solle die Shell des Gastbenutzers in /bin/false ändern. Wenn ich das mache, kann ich mich überhaupt nicht als Gastbenutzer anmelden. Transmit sagt: „Der Benutzername oder das Passwort wurde vom Server nicht akzeptiert“ und der Befehlszeilen-SFTP-Client sagt: „Verbindung geschlossen“, nachdem ich das Passwort eingegeben habe.
Ich glaube, ich habe alles versucht. Sieht jemand, was fehlt?
Antwort1
Es sieht so aus, als ob das ChrootDirectory auf eine Ebene ÜBER dem Home-Verzeichnis zeigen sollte.
Da das Haus des Gastes/var/www/uploads/guest, dann ist dieChrootVerzeichnissollte verweisen auf/var/www/uploads
Das ist ein VIELLEICHT.... mir ist noch ein anderer Gedanke gekommen:
Sie haben das neuere OpenSSH manuell installiert. Haben Sie die alte Version entfernt? Wo wurde die neue Version installiert? Manchmal, wenn Sie nicht aufpassen, wird neues Zeug installiert in/usr/lokal/anstatt/usr, was bedeutet, dass der SFTP-fähige Server seine Konfigurationsdateien liest von/usr/local/etc/ssh/…statt der erwarteten/etc/ssh/…
Zumindest etwas, das man überprüfen sollte.
Antwort2
Ich hatte mit genau dem gleichen Problem zu kämpfen, aber es gelöst, indem ich das chroot-Verzeichnis eingerichtet habesowie alle übergeordneten Verzeichnissemit den folgenden Berechtigungen
1) Besitzer zu Root ändern:
sudo chown root [directory]
2) Entfernen aller Schreibberechtigungen für Gruppen:
sudo chmod 755 [directory]
Leider bedeutet das meiner Meinung nach, dass Sie nicht direkt zu einem Ordner springen können, der nicht dem Root-Benutzer gehört. Ich würde mich aber freuen, wenn mich jemand diesbezüglich korrigieren könnte!