# mldonkey bringt home-verzeichniss durcheinander

## saschman66

immer wenn ich mldonkey start speichert er alle dateien direkt in mein home-verzeichniss (/home/user/), das will ich aber nicht. Ich hätte gern, dass mldonkey alle daten in /home/user/mldonkey speichert. Wie kann ich das umstellen?

Ich wär für jede hilfe dankbar

----------

## Headhunter123

So einfach  :Smile: 

 *Quote:*   

> 
> 
> $ cd
> 
> $ mkdir mldonkey
> ...

 

----------

## Attila

Hiho,

Sinniger weise würde ich mldonkey aber unter einem extra user laufen lassen ! - Und der kann in seinem home machen was er will !  :Smile: 

  Atti

----------

## serg

@Attila

genau das will ich tun, ich habe zuzeit nur in

local.start

mldonkey -daemon

stehen, leider startet er es immer mit root rechte kannst du etwas genau beschreiben wie ich mldonkey ein extra user einfüge und das er immer in bestimmten home verzeichnis rum schreibt ?

----------

## hopfe

Würde das nicht in local start machen sondern  mit hilfe eines startscriptes. 

Du legst die Datei mldonkey im verzeichnis /etc/init.d/. an. 

```
#!/sbin/runscript

 

depend() {

    need net

}

 

start() {

    ebegin "Starting mldonkey"

    sudo -u mldonkey_user -H /pfadzu_mldonkey/mldonkey > /var/log/mldoneky.log

    eend $? "Failed to start mldokney"

}

 

stop() {

    ebegin "Stopping mkldonkey"

    killall mldonkey

    eend $? "Failed to stop mldonkey"

}
```

Danach einfach ein 

```
rc-update add mldonkey default
```

 und der daemon startet und stopt automatisch  :Smile: .

Add: Ich verwende das Script für giFT kann daher nicht 100% garantieren das es für mldonkey funktioniert.

----------

## toskala

imho sollte man bei mldonkey doch ein configfile editieren worin man die pfade angibt.

----------

## serg

@hopfe

das ist schon mal net schlecht mit dein script.. nur da ich nix davon verstehe frage ich lieber nach das die ganzen parameter für eine wirkung haben

sudo -u mldonkey_user -H /pfadzu_mldonkey/mldonkey > /var/log/mldoneky.log

sudo <-- ??

-u     <--heist wohl "user"

-H     <-- wird wohl pfad heisen, hmm ich starte mein mldonkey einfach dürch      "mldonkey"

>  <-- was heist das, habe schon mehrmals gesehn simbolisirt das etwas "log"?

----------

## hopfe

-H sagt sudo das er das home Verzeichnis des Benutzers verwenden soll. (kann auch -h sein bin mir nicht sicher einfachmal ein man sudo machen  :Smile:  )

> Damit kann man die Ausgaben in eine Datei umleiten.  mußt du aber nicht machen.

----------

## serg

ich habe jetzt diesen script ausprobiert

```

#!/sbin/runscript

depend() {

    need net

}

start() {

    ebegin "Starting mldonkey"

    sudo -u mldonkey_user -H /pfadzu_mldonkey/mldonkey > /var/log/mldoneky.log

    eend $? "Failed to start mldokney"

}

stop() {

    ebegin "Stopping mkldonkey"

    killall mldonkey

    eend $? "Failed to stop mldonkey"

}

```

aber irgentwie will er nicht richtig, da fehlt glaube ich der start befehl selbst "mldonkey".. so vielleicht:

```

#!/sbin/runscript

depend() {

    need net

}

start() {

    ebegin "Starting mldonkey"

    sudo -u mldonkey_user -H /pfadzu_mldonkey/mldonkey > /var/log/mldoneky.log

    mldonkey

    eend $? "Failed to start mldokney"

}

stop() {

    ebegin "Stopping mkldonkey"

    killall mldonkey

    eend $? "Failed to stop mldonkey"

}

```

----------

## hopfe

 *serg wrote:*   

> 
> 
> ```
> 
>     sudo -u mldonkey_user -H /pfadzu_mldonkey/mldonkey > /var/log/mldoneky.log
> ...

 

du hättest ja /pfadzu_mldonkey auf durch den entsprechenden Pfad ersetzen müssen.

----------

## serg

ohh ich dachte -H heist in welche verzeichnis mldonkey gestartet werden soll   :Embarassed: 

giebs da noch ein parameter der das macht zb.

```

sudo -u mldonkey_user cd /home/xxx/mldonkey -H /pfadzu_mldonkey/mldonkey > /var/log/mldoneky.log

```

weil ich will nicht das mldonkey dann seine ganze configs in /home/xxx/ reinschreibt

----------

## hopfe

Dann würde ich das ganz anders machen 

Anstatt: 

```

sudo -u mldonkey_user -H /pfadzu_mldonkey/mldonkey > /var/log/mldoneky.log 

```

Würde ich dann

```
su xxx 

cd /home/xxx/mldonkey

./mldonkey
```

machen

----------

## serg

su = super user, oder nicht?  :Rolling Eyes: 

----------

## hopfe

Mit su ohne Parameter kannst du von einen normalen Benutzer aus root werden. Wenn du bereits root bist kannst du mit su <benutzer>, ohne password die shell für einen beliebigen Benutzer erzeugen.

----------

## sOuLjA

Hab den früher auch lieber unter einem extra user starten lassen, ist ganz ok so. Ansonsten gehts sicher auch mit einem ordner und von dort aus dann starten, aber seitdem ich mldonkey gegen den viel besseren lmule ausgetauscht hab, brauch ich darüber auch nicht mehr nachdenken  :Very Happy: 

----------

## hopfe

lmule ist nicht schlecht, aber für mich ist eigentlich das webinterface wichtiger als ein Oberfläche  :Smile: . 

Zudem brauche ich für mldonkey nicht unbedingt X11  :Smile: 

----------

## sOuLjA

hm ja ich finds auch nciht so gut das der server und gui zusammen ist aber das war bei mir nicht so auschlaggebend, eher nebensächlich, hauptsache er zieht was runter, unter mldonkey wars zum schluss echt übel,da konnte ich ja wochenlang was runterladen

----------

## Luxus

configs werden halt immer in ~ geschrieben.. aber mitlerweile startet man mldonkey über ./mlnet -daemon

ich rate auch update auf die neuste cvs version..

erklärung für das updaten gibs auf http://mldonkey.berlios.de

----------

## pZYchO

Tach zusammen...

Ich habe das Startscript so realisiert:

```

#!/sbin/runscript

depend() {

        after net sysklogd

}

start() {

        ebegin "Starte MLdonkey..."

        su - mldonkey -c "mldonkey &" 1>/dev/null 2>&1

        eend 0

}

stop() {

        ebegin "Stopping MLdonkey..."

        echo kill | telnet localhost 4000 1>/dev/null 2>&1

        eend 0

}

```

Für Mldonkey sollte grundsätzlich ein seperater User angelegt werden, ich würde mich nicht drauf verlassen, dass das Tool sicher ist (ich hab's nicht gerne wenn jmd auf meiner Platte rumröddelt, dann kann ich auch wieder Win installieren... =) ).

Die Stop Routine läuft nur, wenn Mldonkey keine Authentifizierung erwarten... Müsste man in den echo noch einbauen, z.B.:

```

echo -e "auth meinpw\nkill" | telnet localhost 4000 1>/dev/null 2>&1

```

cYa...

----------

## serg

ich habe jetzt ein mldonkey user angelegt, damit der user nicht per ssh connecten kann habe ich in passwd "mldonkey xxxx/xxx:/bin/false" reingeschrieben.. wie soll ich jetzt aber mldonkey starten wen ich nicht im shell reinlogen kann? giebs da irgentwie eine möglichkeit  :Smile: 

----------

## pZYchO

Hi...

Der MLdonkey User sollte mit

```

passwd -l mldonkey

```

gesperrt werden, somit kann man sich nicht mehr an der Konsole anmelden, ssh müßte aber dennoch gehen... Bin ich nicht sicher, aber um sicher zu gehen unter /etc/ssh/sshd_config einfach die Zeile

```

DenyUsers mldonkey

```

einfügen...

Als shell muss dann /bin/bash oder welche bash auch immer su auch haben willst eingetragen werden. Wenn du als root eingelogged bist, kannst du mit su - mldonkey zu dem user wechseln, oder mein startscript benutzen... =)

MfG pZYchO

P.S.: /etc/init.d/sshd restart nicht vergessen...

----------

## serg

jo danke

DenyUsers <-- das habe ich gesucht

zum dein script.. kannst du mir ihn etwas näher beschreiben was die ganzen parameter bewirken

 zb. von hier an    

-c "mldonkey &" 1>/dev/null 2>&1

telnet localhost 4000 1>/dev/null 2>&1

/dev/null 2>&1 <--- sowas sehe ich öffters, und ich weiss das es irgentwas mit logs zu tun ist  

 :Rolling Eyes: 

----------

## darookee

 *serg wrote:*   

> 
> 
> ...
> 
> -c "mldonkey &" 1>/dev/null 2>&1
> ...

 

-c = su soll den folgenden befehl ausführen

1>/dev/null 2>&1 = alle ausgaben werden nach /dev/null umgeleitet

 *serg wrote:*   

> 
> 
> telnet localhost 4000 1>/dev/null 2>&1
> 
> 

 

wie auch oben mit der output umleitung...

telnet soll an 'localhost' auf port '4000' verbinden

 *serg wrote:*   

> 
> 
> /dev/null 2>&1 <--- sowas sehe ich öffters, und ich weiss das es irgentwas mit logs zu tun ist  
> 
> 

 

mit logs nicht direkt... diese > leiten halt den output woanders hin... z.B. in eine datei... oder in ein anderes programm... < gibt es ja auch... 0_o

was die zahlen und das & bedeutet weiss ich allerdings auch nicht so genau... die zahlen symbolisieren glaubich stdout und stderror oder so... o_0

----------

## pZYchO

Mahlzeit...

Unter Unix- Systemen (Unix, Linux, BSD.......) gibt es 2 Arten von "Ausgaben"... Stdout und Errout, also eine Ausgabe für Fehler und eine für "normale" Ausgaben...

```

1>/dev/null 2>&1

```

1 steht für Stdout und wird nach /dev/null umgeleitet (/dev/null schluckt alles ohne das es auswirkungen hat, ist früh am morgen, krieg ich im mom nicht besser formuliert / erklärt... =))...

2 steht für Errout und wird nach Stdout umgeleitet...

Normalerweise könnte man auch

```

&>/dev/null

```

verwenden (macht nix anderes), warum das hier nicht funktioniert weiß ich nicht...

zum rest...

su = super user... Man kann aber auch zu einem anderen User wechseln, ist man root kann man zu jedem User wechseln ohne ein PW eingeben zu müssen... Durch das - (su - <user>) werden alle Systemvariablen gesetzt ($USER etc....), ohne - nicht...

mit -c kann man direkt einen Befehl ausführen (schon fast sudo, sudo ist nur viel umfangreicher und man kann rechte deligieren).

Im Klartext:

Durch

```

su - mldonkey

```

wechselt man zum User mldonkey (init scripte werden mit root rechten ausgeführt, also ist keine PW eingabe notwendig, man sollte den User sogar mit passwd -l sperren, damit sich niemand mit dem user anmelden kann).

Mit

```

-c "mldonkey &"

```

wird mldonkey ausgeführt, durch das & wird mldonkey im hintergrund ausgeführt, das init script läuft weiter (ist wichtig, ansonsten würde der init hängen bleiben und das system nicht weiter hochfahren).

Durch

```

1>/dev/null 2>&1

```

werden alle Ausgaben unterdrückt, anstatt nach /dev/null kannst du die natürlich auch in ein Logfile umleiten...´

Ich hoffe deine Fragen sind damit erstmal beantwortet... Ich weiß nicht ob alles technisch korrekt ist, praxisgerecht ist es... =)

----------

## gschneider

Da ich hier viele unnötigerweise mit su und sudo rumhantieren sehe mein init-script:

 *Quote:*   

> #!/sbin/runscript
> 
> depend() {
> 
>         need net
> ...

 

der donkey wird als root gestartet und wechselt selber in den user "mldonkey"

das killall gefällt mir noch nicht so ganz, mit dem start-stop-daemon kann man sicher ne elegantere lösung basteln (mit pid)

----------

## serg

danke psycho.. besser könnte man nicht beschreiben

----------

## pZYchO

Kein Prob... =)

@gschneider:

Ich habe mir die Parameter auch angesehen... Ich mache das allerdings dennoch lieber mit su, weil ich dann sicher sein kann, dass mldonkey nur die rechte des entsprechenden users hat...

MLDonkey ist ein gutes tool, aber ich glaube nicht, dass sicherheit im vordergrund gestanden hat... =) Und unter dem Gesichtspunkt verlasse ich mich nicht darauf, dass mldonkey wirklich unter der Benutzerkennung läuft... Aber jedem das seine, beide Wege sind möglich... =)

Als Kill kannst du meine Lösung, bzw Lösungsansatz nehmen. Ist eine einfache Lösung, aber sehr effektiv... =)

----------

## mo-ca

aber wird der esel durch den Kill-befehl nicht zu hart beendet? (so wie Strg+c in der konsole)

----------

## pZYchO

Nein... Ich mache ja keinen kill <pid> sondern ich connecte via telnet ein kill, also das mldonkey komando... (siehe Script)...

----------

## Genone

Statt su / sudo zu benutzen könnte man die Binaries natürlich auch suid für den mldonkey user setzen:

```

chown mldonkey `which mldonkey`

chmod u+s `which mldonkey`

```

----------

## pZYchO

Jain... Prinzipiell hast du recht, aber ohne su - werden die Variablen nicht gesetzt (home dir etc...)... Insofern ziehe ich die su Lösung vor, wobei man mit suid arbeiten kann...

----------

