PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : proftp - Verzeichnisse für User einschränken



teddy
30.04.03, 10:36
Hi all

Ich hab mir gerade ProFTP installiert und eingerichtet, das klappt auch soweit alles.

Wo ich aber noch keine Lösung gefunden habe:

Wenn ich mich über einen Browser einlogge, der einen "Aufwärtsbutton" hat z.B. der Konqueror, dann kann ich vom HOME Verzeichnis über diesen Button überhall im System hingelangen. Is ja ersmal nich so das problem, wenn in allen Dateien und Ordnern die Rechte so getzt sind das man da nich rankommt. Da ich dies aber nicht bei allen Dateien überprüfen möchte, würde ich diese Verhalten ganz gerne wenigstens so einschränken, daß der eingeloggte Benutzer maximal zugriff auf das HOME Verzeichnis und alles darunter zugreifen kann, nicht auf irgendwas im restlichen System.
Das selbe Problem gilt natürlich auch, beim einloggen mit FTP von der Konsole aus.

Nu hab ich schon mal in der "man proftpd.conf" nachgelesen und hab da etwas gefunden (der Auszug aus der man kommt ganz am Ende), was zur Lösung beitragen könnte. ich habe die Zeilen
<pre>
CDPath /home
</pre>
eingefügt und bekam dann den Fehler das es das <pre> nich geben würde.

Vielleicht weiß jemand, wie ich das konfiguriern muss, damit die entsprechenden Pfade genutz bzw nicht genutzt werden können.

Schon einmal vielen dank im vorraus.
cu all


CDPath
Syntax: CDPath directory
Default: None

Context: server config, <VirtualHost>, <Anonymous>,
<Global>

Module: mod_core

Compatibility: 1.2.0pre2 and later

Adds an entry to a search path that is used when
changing directories. For example: <pre> CDPath
/home/public CDPath /var/devel </pre>

This allows a user to <code>cd</code> into any
directory directly under


/home/public</code> or <code>/var/devel</code>, provided they have the
appropriate rights. So, if <code>/home/public/proftpd</code> exists,


cd proftpd</code> will bring the user to that directory, regardless of
where they currently are in the directory tree.

Doh!
30.04.03, 11:19
ganz einfach:

füge folgende Zeile in die Sektion ein, in der Du den User einsperren willst (wenn Du keinen Virtuellen Hosts hats, dann im global)

DefaultRoot /Pfad/zum/FTP/Verzeichnis

Damit machst Du einen chroot für den user, so dass er nicht mehr weiter nach oben in der Hierarchie kann.

Achtung, Symlinks funktionieren in einer chroot-Umgebung nicht mehr. Falls Du hier ein Trick brauchst, wie doch, sach bescheid, bin gard' in Eile.

Ach, ganz vergessen, Du musst natürlich auch verhindern, dass ein user über den Client ein chroot absetzen kann, daher noch folgendes:

<Global>
<Limit SITE_CHMOD>
Deny All
</Limit>
DefaultRoot /Pfad/zum/FTP/Verzeichnis
DefaultChdir ~
</Global>

mit dem Limit SITE_CHMOD verhinderst Du, dass jemand über FTP einen chroot machen kann.
Der Default root ist ja oben beschrieben
mit dem defaultchdir setzt Du den User in ein bestimmtes verzeichnis beim Login (mit ~ in sein Home-Verzeichnis- Vorsicht verzeichnis muss vorhanden sein, sonst geht kein login!)

teddy
30.04.03, 20:12
Hi,

Schönen Dank für die Hilfe.

Ich hab das gerade ausprobiert und es funktioniert auch super, nur das mit den Links macht Probleme, so wie du schon sagtest. Es wäre Klasse, wenn du mir die Tricks verraten würdest ;)

Und dann hab ich gleich noch eine Frage zu den Pfaden:
(Ich hab nochmal in der man unter DefaulRoot nachgesehen)

DefaultRoot /home/studium studium
DefaultRoot /home/ftp nogroup
DefaultRoot /home

Ich hab jetzt diese Zeilen eingefügt.
Das Ergebnis ist: alle Mitglieder der Gruppe Studium starten beim einloggen im Verzeichnis Studium, was dann auch gleichzeitig das Root-Verzeichnis ist.
Dasselbe gilt für nogroup (anonymes ftp)
Alle anderen Benutzer haben nun als root das /home - Verzeichnis und gelangen beim einloggen auch dort hin. Diese Einstellung grundsätzlich auch ok, was ein wenig stört, ist das alle anderen benutzer nach dem einloggen nicht in ihrem "Orginal"Home Verzeichnis starten.

Weißt du (oder jemand anders) wie ich das einstellen kann ?

ok, schonmal schönen dank (und viel spass beim Tanz in den Mai mit Alk und (hoffentlich) Spass :D )

Doh!
06.05.03, 18:37
In der Mail hast Du mich noch gefragt, wie man das macht, dass user jeweils ihr Homeverzeichnis als Startverzeichnis bekommen. Ganz einfach:

DefaultRoot ~
und/oder
DefaultChdir ~

Das Tilde-Zeichen "~" gilt bei Unix immer als Platzhalter für das jeweilige Home-verzeichnis des users

Vorsicht bei DefaultRoot und DefaultChdir! Mach Dir den Unterschied bewußt! Beim ersten setzt Du eine andere root-Umgebung, sagst also dem User, das von Dir hier angegebene Verzeichnis sei Root, höher geht's nicht. DefaultChdir wechselt einfach in das angegebene Verzeichnis beim login. Das heißt aber nicht, dass es für diesen User im Baum noch höher gehen kann.

So, nun zu der Sache mit den nicht funktionierenden Symlinks in einer chroot-Umgebung. Dazu etwas Theorie (geht leider nicht anders):

Nehmen wir mal an, Du hast ein Verzeichnis: /daten/install/proftpd . Nun willst Du in deinem Homeverzeichnis /home/teddy einen Symlink anlegen, der genau darauf hin verweist. Ein Symlink ist nichts anderes, als eine Datei mit (u.a) dem Inhalt "/daten/install/proftpd". So änderst Du nun die chroot-Umgebung zum Beispiel auf Dein Homverzeichnis "/home/teddy", so geht nun diese Umgebung davon aus, dass "/home/teddy" die root-Ebene ist also "/" rufst Du jetzt den Symlink auf, so steht da aber immer noch "/daten/install/proftpd" drin. Deine Umgebung geht aber nun von "/home/teddy" aus los (weil sie denkt, sie sei root), so dass in Wirklichkeit nach /home/teddy/daten/install/proftpd gesucht wird, was natürlich nicht vorhanden ist.

Wie komme ich aus dem Dilema raus? Nun, Unix hat ja diesen wunderbaren mount-Befehl, und dieser ist auch schön mächtig. So kannst Du nämlich nicht nur devices mounten, sondern auch Verzeichnisbäume, selbst wenn diese schon wo anders reingemountet sind.

Du erzeugst also in diesem Beispiel einen neuen Ordner in "/home/teddy" (nenn ihn meinetwegen mntdaten), und machst dann folgenden Befehl (gilt jetzt nur für dieses Beispiel):

mount --bind /daten/install/proftpd /home/teddy/mntdaten

so, nun hast Du innerhalb Deines Homeverzeichnisses auch den Inhalt von /daten/install/proftpd zur verfügung. Beachte aber unbedingt die Rechte im gemounteten Verzeichnis (kann auch ne schöne Falle sein).

Hoffe geholfen zu haben

teddy
06.05.03, 19:08
hi,

Schönen Dank, das hat mir auf jeden Fall geholfen.

Ich hatte vorher jedem User mit einem Extraeintrag ein Home zugewiesen, was dann heißt, daß ich bei jedem neuem User auch einen neuen Eintrag in die proftpd.conf machen müßte. Da ist zwar nicht soviel Aufwand, aber mit dem DefaultRoot ~ ist das natürlich schon schöner ;)

Das mit dem mount hilft mir nun auch, eine bessere Ordnung in die Dateien auf dem Server zu bringen.

Nocheinmal schönen Dank

cu

schuelsche
27.08.03, 18:14
Hi Ihrs,

da ich die gleiche Frage zu einem anderen FTP-Programm habe, lasse ich diesen Thread wieder aufleben:

ich benutze pure-ftpd und ich hab auch das Tutorial von der x-fish-Homepage vorliegen und die manpage hab ich auch schon durchgewurschtelt... Aber irgendwie habe ich gerade den Eindruck, dass dies unter pure-ftpd gar nicht funktioniert?!

Also, ich möchte auch gerne anonymes FTP verbieten und einen User, den ich angelegt habe, nur auf sein Home-Verzeichnis zugreifen lassen. Dabei handelt es sich nicht um einen virtuell User, sondern einen ganz normal angelegten.

Kann ich denn einen User von vorneherein so beschränken, dass er grds. und immer nur Zugriff auf sein Homeverzeichnis und die darunterliegenden Dateien und Verzeichnisse hat? Dass er also über ftp nicht mittles "cd .." oder ähnlichem das Verzeichnis wechseln kann?

Benutze SuSE Linux 8.2 und pure-ftpd v1.0.14.

Würde mich über Antwort freuen,
Grüsse
schuelsche

Joy
09.10.03, 22:11
Original geschrieben von schuelsche
ich benutze pure-ftpd
...
Also, ich möchte auch gerne anonymes FTP verbieten und einen User, den ich angelegt habe, nur auf sein Home-Verzeichnis zugreifen lassen. Dabei handelt es sich nicht um einen virtuell User, sondern einen ganz normal angelegten.


in die /etc/pure-ftpd.conf einfach folgende Zeile einfügen:

ChrootEveryone yes

Damit sollte es gehen ... tuts bei mir sehr gut.

Grüße,

Joy

Phlogiston
18.06.04, 21:38
wie sieht das denn mit den rechten aus? ich möchte einen ordner aus meinem home verz. freigeben... wie mache ich das am besten und welche rechte muss ich einstellen?