Zurueck Index Vor



chroot()

Eine chroot() Umgebung ist eine Umgebung, aus der man nicht mehr herauskommt. Dazu wird ein beliebiges
Verzeichnis zum root - Verzeichnis; das hat dann die Folge, dasz man in kein anderes Verzeichnis wechseln
kann, weil man ja schon in der "Wurzel ist.


Entnommen von Stonki's Page
Die "DefaultRoot" Anweisung bestimmt das standard Root Verzeichnis fuer einen User bei dem Login. Wenn
"Default Root" auf ein anderes Verzeichnis als "/" verweist, wird unmittelbar nach dem erfolgten Einloogen
ein "chroot" durchgefuehrt. So kann ein Benutzer vom uebrigen Dateisystem isoliert werden.
Das genannte Verzeichnis musz mit "/" beginnen oder kann den Platzhalter "~" enthalten, der fuer das
Heimatverzeichnis des Users steht. Dieses kann auch ein weiteres Unterverzeichnis enthalten, wie z. B.
"~/ html".
Sollte das "DefaultRoot" Verzeichnis auf ein Verzeichnis verweisen, dasz fuer den User nicht zugaenglich ist,
wird er auf das aktuelle Arbeitsverzeichnis gesetzt und nicht auf das normale Homeverzeichnis.
"DefaultRoot" kann nicht im Anonymen Anweisungsblock verwendet werden, da er hierfuer eine spezielle
Anweisung gibt. Die optionale Gruppenangabe kann dazu benutzt werden, "DefaultRoot" auf eine oder mehrere
Gruppen zu beschraenken. Der Ausdruck hat folgendes Format: [!]group-name1[,[!]group- name2[,...]]. Der
Ausdruck wird als logische "UND"-Verknuepfung abgearbeitet, so jeder Ausdruck muss WAHR ergeben, um
die "DefaultRoot" Anweisung zu gestatten. Die Vorzeichen "!" negiert die Gruppenzugehoerigkeit. Achtung:
Grundsaetzlich ist dieses keine 100% Sicherheit, da es Wege geben kann, als User aus diesem "root"
auszubrechen.
Beispiel:
ServerName "A test ProFTPD Server"
ServerType inetd
User ftp
Group ftp
#
# Hiermit wird nun der User direkt in sein Heimatverzeichnis "gesperrt"
# Anschliessend kann der User keine hoeheren Verzeichnisse sehen
# Aufgrund der Gruppenangabe, nur Benutzer der Gruppe "user", jedoch
# nicht User der Gruppe "staff" werden in das Heimatverzeichnis gesperrt
DefaultRoot ~ users,!staff

Im "Einsatz" sieht das dann wie folgt aus:
 [...]
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" is current directory.
ftp> cd uploads
250 CWD command successful.
ftp> cd anonymous
250 CWD command successful.
ftp> pwd
257 "/uploads/anonymous" is current directory.
ftp> cd /
250-CWD command successful.
ftp> pwd
257 "/" is current directory.
ftp> cd ..
250-CWD command successful.
ftp> pwd
257 "/" is current directory.
ftp> 
Ohne die chroot() koennte sich der eingeloggt User in allen Verzeichnissen im System bewegen, in die er auch
wechseln koennte, wenn er im Besitz einer Shell ist.


Zurueck Index Vor