# init.d Skripte nicht als root ausführen



## Kipperlenny (16. Mai 2012)

Moin Moin

Habe eine Skript in /etc./init.d (Debian Squeeze) welches man als user ausführen kann - und dann auch als dieser User läuft.
Wenn der Server aber nun startet, dann wird das Skript als root ausgeführt und das Programm läuft dann als root.

Kann man das init.d Skript so anpassen, dass es nicht als root sondern als ein bestimmter User läuft?

Gruß
Lennart


----------



## deepthroat (16. Mai 2012)

Hi.

 "man su"

Gruß


----------



## Kipperlenny (16. Mai 2012)

Du ich kenne su 
aber eine Änderung von:


```
startbukkit()
{
    if [ "$(screen -ls | grep bukkit)" == "" ] ; then
        cd $bukkitdir
        screen -S bukkit -dmS $javaloc $javaparams -jar $bukkitdir$bukkitfilename
        echo "Starting bukkit server."
    else
        echo "Bukkit is already running."
        exit 0
    fi
}
```

nach


```
startbukkit()
{
    if [ "$(screen -ls | grep bukkit)" == "" ] ; then
        su minecraft
        cd $bukkitdir
        screen -S bukkit -dmS $javaloc $javaparams -jar $bukkitdir$bukkitfilename
        echo "Starting bukkit server."
    else
        echo "Bukkit is already running."
        exit 0
    fi
}
```

bringt nicht den gewünschten Erfolg - denn dann tut sich nach der su Zeile nichts weiter.


----------



## Matt297 (16. Mai 2012)

Hi,

mit 'su <USER>' wird einfach nur ne neue Shell mit dem neuen User gestartet dann hängt das skript natürlich. Du kannst su aber den befehl übergeben, also sowas ähnliches wie:

```
su minecraft -c "screen -S bukkit -dmS $javaloc $javaparams -jar $bukkitdir$bukkitfilename"
```
.

Gruß
Matt


----------



## Kipperlenny (16. Mai 2012)

Wenn ich das Skript jetzt aber als User minecraft starte:

/etc/init.d/dasskript start

dann werde ich nach dem Passwort für den User gefragt. Das war bisher nicht der Fall, wenn ich es als User minecraft gestartet habe (da es ja nur einen Screen Befehl und kein "su" gemacht hat). Kann man also eine if Abfrage einbauen ob man schon der User ist?


----------



## threadi (16. Mai 2012)

Das Stichwort ist sudo, nicht su. Mit sudo kann man auch die Passwortabfrage für bestimmte Fälle unterdrücken. Ich würde in jedem Fall aber davon abraten, vor allem in einem init-Script so etwas einzubauen.


----------



## Kipperlenny (16. Mai 2012)

Wie würdest du das dann lösen?


----------



## threadi (16. Mai 2012)

Starte das Script über cronjob per @reboot. Siehe:
http://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/


----------

