2 Fragen zum VSFTPD (bzw. USB-Stick unmounten)

karlitos

Neuer User
Mitglied seit
4 Mai 2007
Beiträge
50
Punkte für Reaktionen
0
Punkte
0
Hallo

Ich habe freetz auf meine 7170 aufgespielt mit vsftpd. Ich habe mir die Anleitungen dazu duchgelesen und es hat ziemlich gut geklappt bis auf zwei Sachen.

1. wenn ich mich als root anmelde springe mein FTP-Klient ins Verzeichniss /var/mod/root (warum ist klar) kann mich aber von dort niergendwo "durchclicken", wenn ich auf .. gehe passiert nichts, ich kann aber in die Unterverzeichnisse gehen. Da ich der Verwalter dieser FB bin, fand ich es unnötig für mich einen extra Benutzeraccount zu erstellen. Schließlich will ich über FTP auch möglichst überall zugriff haben.

2. Wie kann ich das USB-Stick aushängen ? Auf das Stick greift VSFTPD und Transmission zu, ich habe beide dienste Gestoppt, ich konnte das Stick immer noch nicht aushängen.
Später danach habe ich VSFTPD wieder gestartet, dann wieder auf - unmount - gegangen und voila ... dann ging es ???

Die Frage ist, ob ich nicht irgendein Skript schreiben soll, das ich vor dem Aushängen ausführe damit VSFTPD und Transmission gestoppt werden ... und VSFTPD wieder nach dem Aushängen gestartet wird.

Ich wäre sehr dankbar für eine Erläuterung, Grüße Karel

--- EDIT

ALso ich habe ein Fehler schon gefunden : im Terminal war noch MidnightCommander ausgeführt mit dem Verzeichniss wo der Stick gemountet wurde.

Jetzt funktioniert es auch mit dem automatischen Verlinken nach dieser Anleitung

Die Frage ist also : wie vervollständige ich mein autorun/autoend.sh so dass :

1. beim Einhängen Transmission gestartet und VSFTPD neugetsartet wird
2. beim Aushängen Transmission beendet und VSFTPD gestopppt ... und nach 10 Sekunden wieder gestartet wird

+ die Sache mit dem Root-login ist immer noch offen
 
Zuletzt bearbeitet:
Hast dus mal mit autorun/autoend probiert? Ich mein, wozu haben wir Sachen, die vom Stick ausgeführt werden bei bestimmten Events? ;)
 
Zu 1.) Ich nehme an, dass du chroot jail aktiviert hast. Damit kommst du nicht höher als dein Benutzerverzeichnis.

MfG Oliver
 
Zu 1.) Ich nehme an, dass du chroot jail aktiviert hast. Damit kommst du nicht höher als dein Benutzerverzeichnis.

MfG Oliver

Hups ... völlig richtig. Damit hat sich 1. erledigt und ich habe außerdem noch verstanden was der Eintrag bewirkt.

Jetzt fehlen mir nur die Befehle für FTP/Transmission. Für Transmission habe ich die Befehle transmission-daemon transmission-remote transmissioncli
gefunden, für vsftpd gibt es nur den einen.

Für vsftpd habe ich hier im Forum schon bereits was gefunden :
Code:
 /etc/init.d/rc.vsftpd stop
/etc/init.d/rc.vsftpd start

zum Thema Transmission suche ich gerade
 
rc.vsftpd restart oder sogar reload dürfte eigentlich auch gehen...

MfG
 
Hallo
Das mit dem restart/reload reicht leider nicht. Ich habe noch folgendes versucht :
Code:
#!/bin/sh
# Transmission beenden
/etc/init.d/rc.transmission  stop
# vsftpd beenden
/etc/init.d/rc.vsftpd  stop

# vsftpd nach 10 Sekunden erneut starten
sleep 10s
/etc/init.d/rc.vsftpd start

und

Code:
#!/bin/sh
# Transmission beenden
/etc/init.d/rc.transmission  stop
# vsftpd beenden
/etc/init.d/rc.vsftpd  stop

# vsftpd nach 10 Sekunden erneut starten
/var/media/ftp/vsftpd-start.sh

und habe die sleep ... start Anweisung in ein anderes Skript gepackt - geht auch nicht wirklich. Irgendwie scheint es mir, als würde das autoend skript auf das beenden von vsftpd-start warten.
 
Hallo

Ich kann das Stick immer noch nicht aushängen. So sieht jetzt mein autoend.sh

Code:
#!/bin/sh
# Transmission beenden
/etc/init.d/rc.transmission  stop
# vsftpd beenden
/etc/init.d/rc.vsftpd  stop

umount /var/media/ftp/freetz-ftp/leni/shared
umount /var/media/ftp/freetz-ftp/karlitos/shared
umount /var/media/ftp/freetz-ftp/leni/public
umount /var/media/ftp/freetz-ftp/karlitos/public

Trotzdem kriege ich :
umount: can't umount /var/media/ftp/freetz-ftp: Device or resource busy
umount: can't forcibly umount /var/media/ftp/freetz-ftp: Device or resource busy

Auf dem Stick habe ich noch zusätzlich Verzeichnisse /fritzload/downloads, /fritzload/uploads erstellt und habe im /var/fritzload entsprechens Symlinks gemacht. Ob das die Ursache ist ... :confused:

Ich habe mir das Unmount-Skript vom fritzload angesehn , verstehe es aber leider nicht wirklich.
 
Läuft fritzload denn noch oder hast du das auch beendet?

Ich denke nicht, dass die autoend.sh so gedacht ist, dass du darin umount-Befehle aufrufst. Denn dann läuft das Skript noch von der Platte und die kann natürlich nicht entfernt werden.

MfG Oliver
 
Hallo und danke für die Antwort.
Es ist mir leider noch nicht gelungen festzustellen wie ich fritzload beedne
Code:
/var/mod/root # rc./etc/init.d/rc.vsftpd  stop
-sh: rc./etc/init.d/rc.vsftpd: not found

Und das mit den unmount-Befehlen steht bei den Anleitung für vsftpd : http://trac.freetz.org/wiki/packages/vsftp

Allerding gefällt mir das mit dem mounten/unmounten von den public/shared Verzeichnissen nicht so gut, unter Freetz - Status wird jede Menge von gemounteten Verzeichnissen/Datenträgern angezeigt. Könnte man auch Symlinks nehmen ?

Übrigens : wenn ich unmount klicke verschwinden die shared/public Verzeichnisse unter Freetz - Status, anscheinend funktioniert dan unmounten doch. Aber das USB Stick will nicht.
 
Wieso versuchst du fritzload mit dem Stoppen des vsftpd anzuhalten??

[EDIT] seh grad, Ralf schießt in die gleiche Kerbe ;-)
 
Es gab da Paar Ideen im FREETZMOUNT-Thread oder irgendwo anders die Fehlermeldungen etwas präziser und ausführlicher zu gestalten, warum denn nicht unmounten werden kann. Aber so einfach war die Sache doch nicht.
Grundsätzlich zu den Unmounts, wenn man sie vernünftig ausführt und nicht so hart, wie du es willst. Vernünftig heißt, genau so, wie es im Web-IF der "unmount"-Knopf tut. Und der macht nicht nur unmount und fertig, sondern ruft die hoffentlich mit dem FREETZMOUNT gepatchte hotplug-Skripte von AVM. Die Reihenfolge sieht in diesen Skripten wie folgt aus:
1. Schauen, ob auf dem besagten Medium TAM/FAX-Sachen von AVM liegen. Wenn ja, dann TAM/FAX beenden.
2. autoend.sh auf der zu unmountenden Partition ausführen, wenn vorhanden und wenn gewünscht.
3. umount-Befehle ausführen.
4. Verzeichnis aus /media/ftp löschen
5. ftpd /smbd restarten (wenn existiert)

Deswegen solltest du gar nicht versuchen in den autorun/autoend-Skripten irgendwelche wilde mount-Orgien veranstalten, sondern stattdessen darin dafür sorgen, dass alles beendet wird, was vom Stick läuft und darauf schreibt.
autoend.sh wird im Unterschied zu autorun.sh nicht mit & ins Nirvana geschickt, sondern es wird gewartet, bis es terminiert. Von daher sollte eigentlich alles funktionieren, wenn du es vernünftig machst.

MfG
 
Sorry, mein Fehler ich habe falsche Zeilen kopiert, gemeint war :
Code:
/var/mod/root # /etc/init.d/rc.fritzload  stop   
-sh: /etc/init.d/rc.fritzload: not found
Das habe ich einfach NUR SO versucht, allerding wenn ich ins /etc/init.d schaue ist da von fritzload keine Spur :
Code:
/var/mod/root # ls /etc/init.d    
modlibrc            rc.ftpd             rc.swap
rc.S                rc.hd-idle          rc.syslogd
rc.authorized-keys  rc.hol              rc.telnetd
rc.avm-firewall     rc.media            rc.transmission
rc.conf             rc.mod              rc.usbhost
rc.cpmaccfg         rc.net              rc.virtualip
rc.crond            rc.openvpn          rc.voip
rc.downloader       rc.preaudio.sh      rc.vsftpd
rc.dropbear         rc.ptest.sh         rc.webcfg
rc.dsl.sh           rc.rrdstats         rc.websrv
rc.dsld             rc.samba            rc.wol
rc.external         rc.spindown

Und zu mount-orgien im Skript : ich habe nur DIESE ANLEITUNG gefolgt und da steht es so. Würde es von mir aus auch gerne ändern, hauptsächlich alles funktioniert danach.

Ich weißt nicht wie ich fritzload - mit einem Befehl - beedne. Ich habe schon danach gesucht aber noch nicht gefunden. Ich finde freetzload auch unter Freetz - Dienste nicht. Ich könnte aber noch nachschauen ob samba nicht da stick blockiert

EDIT :

Also das Problem was eher samba als fritzload. Wenn ich samba vor dem unmounten - über den unmount Knopf - beende geht alles. Wenn ich aber /etc/init.d/rc.samba stop in das Skript eingefügt habe geht es nicht. Und ich bekomme :
Code:
Stopping transmission...done.
Stopping vsftpd...done.
Stopping samba...failed.
Stopping samba...failed.
Stopping ftpd AVM FTP Server...not found.
Starting samba...done.
Starting ftpd AVM FTP Server...disabled.

Das werde ich mir jetzt noch weiter ansehen.
 
Zuletzt bearbeitet:
Ich denke nicht, dass die autoend.sh so gedacht ist, dass du darin umount-Befehle aufrufst. Denn dann läuft das Skript noch von der Platte und die kann natürlich nicht entfernt werden.

Es wird ja nicht versucht, umount für die Platte selbst aufzurufen, sondern für mount -bind Befehle, die nach dem Mounten ausgeführt wurden, und die die Platte auch blockieren würden. Die Fehlermeldungen zeigen auch, daß /var/media/ftp/freetz-ftp busy ist und nicht die Unterverzeichnisse davon, die anscheinen erfolgreich entfernt werden konnten.
 
fritzload ist weder ein Freetz-Dienst, noch Bestandteil von Freetz. wie man das ding beendet, erfährst du am besten beim Autor im entsprechenden Thread oder wie auch immer.
 
Hallo

Ich habe festgestellt, dass freetzload nicht das Problem ist. Das problem ist, dass samba das USB-Stick blockiert und lässt sich zwar über die freetz Oberfläche stoppen, nicht aber über ein Skript :

Code:
/var/mod/root # /etc/init.d/rc.samba stop
Stopping samba...failed.
/var/mod/root # /etc/init.d/rc.samba restart
Stopping samba...failed.
Starting samba...done.

Wenn ich samba über freetz beende, klappt es mit dem unmount meißtens.
 
Bitte die Aufrufe mit vorangestelltem "sh -x" ausführen, und die Ausgabe posten.
 
Code:
/var/mod/root # sh -x /etc/init.d/rc.samba stop   
+ BDIR=/sbin
+ DAEMON=samba
+ SMBD=smbd
+ NMBD=nmbd
+ MODPATH=/mod/etc
+ CONF=/mod/etc/smb.conf
+ . /etc/init.d/modlibrc
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin
+ export LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
+ [ -z  ]
+ DAEMON_LONG_NAME=samba
+ [ -z  ]
+ PID_FILE=/var/run/samba.pid
+ [ -z  ]
+ CONF_NAME=samba
+ [ -z  ]
+ CONF_ENABLED=samba_ENABLED
+ [ -z  ]
+ DAEMON_BIN=samba
+ [ -n samba ]
+ modlib_loadconfig
+ local CONF_FILE=/mod/etc/conf/samba.cfg
+ [ ! -r /mod/etc/conf/samba.cfg ]
+ . /mod/etc/conf/samba.cfg
+ export SAMBA_ENABLED=no
+ export SAMBA_INTERFACES=192.168.178.1/255.255.255.0
+ export SAMBA_MASTER=yes
+ export SAMBA_NETBIOS_NAME=FRITZ.BOX
+ export SAMBA_OS_LEVEL=20
+ export SAMBA_SERVER_STRING=%h (Samba %v)
+ export SAMBA_WORKGROUP=freetzgroup
+ stop
+ echo -n Stopping samba...
Stopping samba...+ killall -TERM smbd
+ exitvals=0
+ NSP=1
+ [ 0 -ge 1 ]
+ exitvaln=0
+ [ -x /sbin/nmbd -a 1 -eq 1 ]
+ killall -TERM nmbd
+ exitvaln=0
+ [ 0 -eq 0 -a 0 -eq 0 ]
+ echo done.
done.
+ exit 0


/var/mod/root # sh -x /etc/init.d/rc.samba restart
+ BDIR=/sbin
+ DAEMON=samba
+ SMBD=smbd
+ NMBD=nmbd
+ MODPATH=/mod/etc
+ CONF=/mod/etc/smb.conf
+ . /etc/init.d/modlibrc
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin
+ export LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
+ [ -z  ]
+ DAEMON_LONG_NAME=samba
+ [ -z  ]
+ PID_FILE=/var/run/samba.pid
+ [ -z  ]
+ CONF_NAME=samba
+ [ -z  ]
+ CONF_ENABLED=samba_ENABLED
+ [ -z  ]
+ DAEMON_BIN=samba
+ [ -n samba ]
+ modlib_loadconfig
+ local CONF_FILE=/mod/etc/conf/samba.cfg
+ [ ! -r /mod/etc/conf/samba.cfg ]
+ . /mod/etc/conf/samba.cfg
+ export SAMBA_ENABLED=no
+ export SAMBA_INTERFACES=192.168.178.1/255.255.255.0
+ export SAMBA_MASTER=yes
+ export SAMBA_NETBIOS_NAME=FRITZ.BOX
+ export SAMBA_OS_LEVEL=20
+ export SAMBA_SERVER_STRING=%h (Samba %v)
+ export SAMBA_WORKGROUP=freetzgroup
+ PARA2=
+ [ 1 -ge 2 ]
+ stop
+ echo -n Stopping samba...
Stopping samba...+ killall -TERM smbd
+ exitvals=0
+ NSP=1
+ [ 0 -ge 1 ]
+ exitvaln=0
+ [ -x /sbin/nmbd -a 1 -eq 1 ]
+ killall -TERM nmbd
+ exitvaln=0
+ [ 0 -eq 0 -a 0 -eq 0 ]
+ echo done.
done.
+ sleep 2
+ start
+ echo -n Starting samba...
Starting samba...+ config
+ mkdir -p /var/locks
+ mkdir -p /var/samba/lib
+ mkdir -p /var/samba/private
+ modlib_adduser ftpuser -G users -D -S -h /var/media/ftp -g ftp user
+ local user=ftpuser
+ shift
+ grep -q ^ftpuser: /etc/passwd
+ return 0
+ /mod/etc/default.samba/samba_conf
+ [ -r /var/tmp/smbpasswd.cleartext ]
+ pidof smbd
+ smbd -D -s /mod/etc/smb.conf
+ exitvals=0
+ NST=1
+ [ 0 -ge 1 ]
+ exitvaln=0
+ [ -x /sbin/nmbd -a 1 -eq 1 ]
+ nmbd -D -s /mod/etc/smb.conf
+ exitvaln=0
+ [ 0 -eq 0 -a 0 -eq 0 ]
+ echo done.
done.
+ exit 0

Cool, dass mit dem sh -x konnte ich noch nicht. Wieder was gelernt

Und danke euch allen :)
 
Code:
Cool, dass mit dem sh -x konnte ich noch nicht. Wieder was gelernt
[/QUOTE]

Shell Basics. Stehen an Millarden Stellen im Internet. 
Und es löst nicht dein Problem, sondern sollte den Fehler zeigen, was es aber nicht tut.
 
Konkret ist hier das Stoppen erfolgreich. Du solltest also nicht nur das Skript mit der Option -x aufrufen, sondern das in so einer Situation tun, wo beim Stoppen der Fehler auftritt.
Da restart aus stop und start besteht, ist es auch nicht notwendig, restart extra zu betrachten, wenn der Fehler in beiden Fällen beim Stoppen kommt.
 

Statistik des Forums

Themen
246,308
Beiträge
2,249,817
Mitglieder
373,915
Neuestes Mitglied
sunburstc
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.