scponly mit chroot

G

greenhawk

Mitglied
[gelöst] scponly mit chroot

Hallo,

ich hab mal ne Frage zu scponly mit chroot unter Debian Lenny.
Ich hab hier 2 verschiedene Howto's vor mir, einmal basler.netsession.info und zum anderen LinuxWiki.

Grundsätzlich verstehe ich auch, wie das alles funktionieren soll, aber was mir ein wenig Kopfzerbrechen bereitet, ist die Ausführung von setup_chroot.sh.

Was mir als erstes komisch vorkommt, ist der Fakt, dass die Datei bei Debian in /usr/share/doc/ liegt. Wieso liegt ein ausführbares Script im Doku-Ordner?
Zum zweiten, hätte ich gerne von jemandem, der das schon mal durchgespielt hat gewusst, ob ich alle im LinuxWiki beschriebenen Extrasachen in die Datei einbauen muss oder ob das aus dem ersten Howto (/dev/null im chroot anlegen) genügt.

Danke.
 
Zuletzt bearbeitet:
Was mir als erstes komisch vorkommt, ist der Fakt, dass die Datei bei Debian in /usr/share/doc/ liegt. Wieso liegt ein ausführbares Script im Doku-Ordner?

Weil es als Beispiel dienen soll?

Wenn die Debian-Jungs das Ganze schlau gemacht haben, dann ist das Script dort nicht ausführbar installiert und wer es nutzen/abwandeln möchte, der kann es in $PATH kopieren, anpassen und mit dem x-Bit versehen.
 
Ok, das leuchtet ein. Ausführbar war das Script auch nicht.
Ich hab es jetzt genutzt, um den user mit chroot anzulegen, was auch problemlos funktioniert hat. Mal sehen, was beim ersten Kontakt mit nem Windowsrechner passieren wird.


EDIT:
Ich habe jetzt mal versucht, mich als scpuser auf meinem Linux-Rechner anzumelden, bekomme dabei aber den Fehler
Code:
WinSCP: this is end-of-file:0
Das Problem ist hier, dass WinSCP irgendwelche nichtvorhanden Gruppen sucht. Das kann man lösen, indem man die datei groups.c aus /usr/share/doc/scponly benutzt, um diese Gruppen zu erstellen bzw. eine bestimmte Datei groups nach (in meinem Fall) /home/scpdata/bin/groups kopiert.
Komisch ist allerdings, dass in der chroot-Umgebung unter /usr/bin/ eine Datei groups liegt.

Ich seh hier grad nicht mehr so richtig durch. Kann mir da mal jemand helfen?


EDIT:
Also ich habe jetzt nochmal zu diesem leidigen Problem recherchiert und folgendes rausgefunden:

Da es hier nur um die Kompatibilität zu WinSCP 2.0 geht und aktuell schon Verison 4 Standard ist, kann die Kompatibilität zu WinSCP 2.0 einfach ausgeschalten werden.
Die Frage ist natürlich, wie man das macht. Es gibt halt die Konfigurationoption --disbale-winscp-compat. Aber wie kann ich die an APT übergeben? Mit -o= hab ich's schonmal versucht, aber ich glaube so geht das nicht.

Außerdem hieß es in einer Debian-Mailingliste, dass die Version 4.8 von scponly diesen Bug beheben würde. Ich hab mir daraufhin einfachmal die 4.8 installiert und alles neu eingerichtet. Das Resultat war das selbe.

Mir fällt halt nur noch ein, dass ich evtl. einen Fehler beim Anlegen des Null-Devices mache. So hab ich's gemacht:
Code:
cd /home/scpdata
mkdir dev
cd dev
mknod -m 666 null c 1 3
Und, dass dieser Ordner dann root gehört, ist ja auch richtig.

Hat da jemand noch einen Rat?
 
Zuletzt bearbeitet:
Erfolg: chrooted scponly funktioniert

Sooo, ich hab's jetzt tatsächlich geschafft. Glaub ich zumindest.

Hier mal ein kleines Howto für chrooted scponly:

0. Open-SSH-Server muss installiert sein und laufen.

1. scponly-4.8-Quellen runterladen (scponly-Seite), checken, auspacken und ins neue Verzeichnis wechseln.

2. Konfigurieren:
Code:
./configure --disable-winscp-compat --enable-scp-compat --enable-chrooted-binary
siehe auch: Erklärung der Konfigurationsoptionen

3. Installieren (als root):
Code:
make && make install

4. scponly in die Liste der Shells eintragen (als root):
Code:
echo "/usr/local/bin/scponly" >> /etc/shells

5. chroot-Umgebung erstellen:
Code:
cd [Quellen-Verzeichnis von scponly]
make jail
-> Username angeben (z.B.: scpu)
-> Wurzelverzeichnis für User angeben (z.B.: /home/scpu)
-> schreibares Unterverzeichnis angeben (Erklärung)
-> Passwort angeben

6. Null-Device anlegen (wegen Interoperabilität mit WinSCP):
Code:
cd /home/scpu
mkdir dev
cd dev
mknod -m 666 null c 1 3

Ich habe das ganze mal mit localhost getestet und es hat funktioniert.
Das Problem ist nur, dass nur root den Inhalt des schreibbaren Verzeichnisses von scpu löschen kann, weil andere User keine Berechtigung dazu haben und scpu als Shell ja scponly benutzt.¹
Das heißt also, ich kann lediglich aus diesem Verzeichnis Dateien kopieren, die dorthin übertragen wurden. Das bissl unpraktisch, weil ich mich nicht jedes Mal als root einloggen will, nur um die Dateien da wegzulöschen.
Gibt's da eine elegante Variante?

¹ deshalb ist es auch normal, dass man sofort wieder abgemeldet wird, wenn man versucht, sich normal als dieser User in der Konsole anzumelden

EDIT

Dieses kleine Problemchen lässt sich folgendermaßen lösen:
Der für SCP angelegte Benutzer (hier scpu) hat ja, wie jeder User, eine eigene Gruppe.
Die ist in der Datei /etc/group gelistet.
In diese Gruppe trägt man dann alle User ein, die Zugriff auf die Daten im schreibbaren Unterverzeichnis von scpu (hier data) haben sollen, also in etwa so:
Code:
scpu:x:1002:alibaba,jesus # Alibaba und Jesus haben Zugriff auf Ordner data

Außerdem muss man noch dafür sorgen, dass man auch Schreibrechte im Ordner hat (als root):
Code:
cd /home/scpu
chmod g+w data/ # Gruppe (g) bekommt (+) Schreibrechte (w)
 
Zuletzt bearbeitet:

Ähnliche Themen

Server-Monitoring mit RRDTool

Zurück
Oben