
Auf einem Debian Wheezy 64bit erstelle ich einen neuen Benutzer für einen Kunden, der Dateien in einem Verzeichnis ablegt. Nachdem der Benutzer erstellt wurde, entferne ich seine interaktive Anmeldung, indem ich in /bin/bash
ersetze . Dann füge ich ihn zu hinzu , sodass seine Sitzung in sein Home-Verzeichnis chrootet wird./bin/false
/etc/passwd
/etc/ftpchroot
Sobald ich den Benutzer jedoch hinzufüge /etc/ftpchroot
, kann er bei der Anmeldung keine Dateien sehen. Der Benutzer ist chroot-geschützt und kann nicht nach oben navigieren. Er kann Dateien hochladen, die im richtigen Verzeichnis gespeichert sind und die Berechtigungen 640 und die Eigentümerschaft thatuser:thatusersgroup haben.
Meine Gedanken bisher:
/etc/ftpchroot
tut eindeutig etwas und zwar das, was es tun soll.- Alle auf diesem Computer erstellten Benutzer haben dieses Problem (zweimal mit anderen neuen Benutzern versucht)
- Es ist nicht verzeichnisabhängig. Das Ändern seines Home-Verzeichnisses und das Chrooten dorthin führt zum selben Problem.
Es ist seltsam für mich, da ich das schon einige Male gemacht habe und noch nie darauf gestoßen bin. Leider ist es schwierig, bei Google nach einer Antwort zu suchen, da es sich um eine problematische Problembeschreibung handelt.
Bearbeitung 1: Etwas, das ich jetzt sehe. Wenn ich mich unter ftpchroot anmelde, wird keine Meldung angezeigt, wenn die Anmeldung erfolgreich abgeschlossen ist. Wenn ich mich jedoch ohne ftpchroot anmelde, /etc/motd
wird nach Abschluss der Authentifizierung eine Meldung angezeigt.
Bearbeitung 2: Ich habe das Problem irgendwie umgangen, indem ich installiert habe inetutils-ftpd
. Es brachte eine PAM-Authentifizierung mit sich, und nachdem ich diese konfiguriert hatte, meldete es denselben Benutzer ohne das erwähnte Problem an, und er konnte seine Dateien problemlos hochladen und anzeigen.
Antwort1
Wenn Sie chroot verwenden, müssen alle Binärdateien, die Sie innerhalb des Chroots verwenden möchten, innerhalb dieses Chroots vorhanden sein. Im Fall von ftpchroot bedeutet dies normalerweise, dass der ftpd über ls
Fähigkeiten innerhalb seiner eigenen Binärdatei verfügen muss, anstatt sich auf die /bin/ls
des Systems zu verlassen, da sonst jeder Benutzer seine eigene haben müsste $HOME/bin/ls
.
Die Lösung besteht also darin, einen FTP-Daemon zu verwenden, der über ls
integrierte Funktionen verfügt (oder ihn mit --ls-included oder der entsprechenden Option für diesen bestimmten FTP-Daemon neu zu kompilieren).