PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : proftp verzeichnisse freigeben



downtown
04.04.04, 13:26
hallo leute

ich möchte für mich und ein paar kollegen einen privaten ftp-server aufsetzen. genauer gesagt, sollen zwei verzeichnisse freigegeben werden und zwar für zwei verschiedene user:

nur lesezugriff für user ftp fürs verzeichnis /data/files/ und schreib- und lesezugriff für user tinu im verzeichnis /data/webserver/tinu. man könnte denken, das sei eine einfache sache :ugly:
ich bin mittlerweile sicher zwei, drei stunden am suchen und komme nicht weiter :rolleyes:

dazu habe ich einfach mal den proftpd (version 1.2.9, selber compiliert) unter debian woody installiert.


user ftp ist lokal eingerichtet (ohne home-verzeichnis, shell = /bin/false), bekommt aber beim eingeben des passwortes immer die meldung "ERROR:> Password not accepted
ERROR:> Unable to login"
mit user tinu bekomme ich auch keinen login (ebenfalls ohne home-verzeichnis, shell = /bin/false).

beide user habe ich mit useradd erstellt, passwort habe ich mit crypt() mit php generiert und dann in /etc/shadow gespeichert. muss ich evtl. noch etwas neu starten?

mit dem normalen user "roman" (home-verzeichnis /home/roman und shell /bin/bash) komme ich das home-verzeichnis zu gesicht. diesen brauche/will ich eigentlich aber gar nicht :ugly:

anbei habe ich die proftpd.conf angehängt. vielleicht kann sie ja jemand mal anschauen ;)

vielen dank!
downtown

unnamed
05.04.04, 13:00
Servus,

also die Idee mit den lokalen usern ist ganz gut. So hab ich das auch bei mir realisiert. Am einfachsten kannst du dir es machen, indem du den Usern 'ftp' (also /data/files) und 'tinu' (also /data/webserver/tinu) jeweils das gewünschte Verzeichniss als home Verzeichnis gibst. Steck beide user in eine neue Gruppe, z.B. 'ftpuser', dann sagst proftpd, dass sich nur user aus der Gruppe 'ftpuser' einloggen dürfen.

Nimm einfach diesen Teil deiner config raus.


#
# shares
#


# /data
<Directory /data/files/>
UserAlias ftp
HiddenStor off
AllowRetrieveRestart on
<Limit WRITE>
DenyAll
</Limit>
</Directory>

<Directory /data/webserver/tinu>
UserAlias tinu
HiddenStor off
AllowRetrieveRestart on
<Limit WRITE>
DenyAll
</Limit>
</Directory>


Und füge mal ein:



DefaultRoot ~

<Limit LOGIN>
DenyGroup !ftpuser
</Limit>



Jetzt können sich alle lokalen Benutzer per FTP in ihre home Verz. einloggen.
Die Rechte auf den Verzeichnissen und den Dateien kannst du nun lokal ändern wie du Lust hast.

Das wäre jetzt mein Lösungsvorschlag für weitere bin ich offen ;)

best regards unnamed

downtown
06.04.04, 18:33
vielen dank für deine hilfe!

nachdem ich /bin/bash als shell gegeben hatte, klappt der login bei beiden wunderbar. ausserdem stimmten die rechte von /data und dessen unterverzeichnissen noch nicht ;)
soweit also so gut.

leider 'chroot'et er aber noch nicht.
DefaultRoot ~
ist in der conf drin, proftpd mehrmals neu gestartet. ich kann aber immer noch auf /bin, /home, /etc, etc. :) zugreiffen :rolleyes: vorher möchte ich den server noch nicht öffnen...

unnamed
07.04.04, 10:14
hast du die rausgenommen??


#
# shares
#


# /data
<Directory /data/files/>
UserAlias ftp
HiddenStor off
AllowRetrieveRestart on
<Limit WRITE>
DenyAll
</Limit>
</Directory>

<Directory /data/webserver/tinu>
UserAlias tinu
HiddenStor off
AllowRetrieveRestart on
<Limit WRITE>
DenyAll
</Limit>
</Directory>

Hm, normalerweise sollte es mit 'DefaultRoot ~' tun. Habs schon mehrmals getestet. Check evt. nochmal die Rechte.

downtown
07.04.04, 10:44
hä, jetzt gehts!!
anscheinend startet der server mit proftpd restart nicht neu! obwohl keine fehlermeldung erscheint :rolleyes:
naja, habe ihn halt mit kill abgeschossen und nochmals gestartet, jetzt klappts wunderbar :D

vielen dank!

Bellerophon
07.04.04, 10:56
Hi,

im zweifelsfall würde ich den Prozess nicht gleich killen, sondern mit "proftpd stop" und proftpd "start" neu starten.

Ausserdem kannst du natürlich den ServerType auf Inetd setzen und ihn in die inetd.conf eintragen... Dann startet er bei jedem Connectversuch neu... inkl. geänderter Config!

Viel Spass

Bellerophon

downtown
08.04.04, 11:18
vielleicht setze ich den proftp später mal in den inetd ein ;)

jetzt bin ich aber zuerst wieder bei einem problem. und zwar lässt es sich vom internen netzwerk problemlos verbinden und eigentlich alle aktionen durchführen, aber sobald jemand von aussen versucht, den ftp-server zu benutzen schlägt es nach dem login fehl. ich habe nun etwas geforscht und die 'passiv mode' entdeckt, welche für mich eigentlich ideal sein sollte ;)

ich bzw. der server sitzt hinter einem nat-router. ich habe die ports 21 und 5000-5010 zum server weitergeleitet. trotzdem bricht der versuch, eine verbindung herzustellen nach dem list-kommando mit einem timeout ab.

ftp-client steht auf passiv-mode, beim server ist die zeile
PassivePorts 5000 5010
eingetragen, server ist auch neu gestartet (diesmal mit stop ;) ).

nmap meiner externe ip gibt folgendes aus. ausserdem habe ich ein netstat ausgeführt, auch dies scheint meiner meinung nach ok zu sein :rolleyes:
roman-linux:~# nmap xxx.xxx.xxx.xxx -p 5000-5010
(...)
(The 9 ports scanned but not shown below are in state: closed)
Port State Service
5008/tcp open unknown
5009/tcp open unknown
(...)
roman-linux:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
(...)
tcp 0 0 roman-linux:ftp xxxxxxxxxxxxxx:64549 ESTABLISHED
(...)
tcp 0 0 roman-linux:5007 xxxxxxxxxxxxxx:1866 TIME_WAIT
(...)

wo könnte der fehler liegen?
evtl. zuwenig passive ports? oder muss ich noch ein anderes ftp-programm probieren :mad:

downtown
09.04.04, 17:16
also ich hab jetzt mal mit 100 passiven ports probiert. leider immer noch das selbe ergebnis :rolleyes:

downtown
12.04.04, 12:48
es funktioniert mittlerweile!!

ich habe nun nochmals die passiven ports geändert, auf 21210 - 21220 und noch diesen eintrag in die proftpd.conf eingefügt:
MasqueradeAddress dyn-dns-adresse.tld

vielen dank euch allen :D