Autostart als anderer User?

T

the-loader

Jungspund
ich möchte einen counterstrike server unter einen anderen user laufen lassen (also nicht umgedingt als root).

was kann ich da am besten in rc.local schreiben?
 
Google?

Code:
su user -c "befehl"
exit 0

Ein shell-Skript basteln das obige rein schreiben und "befehl" durch den Startbefehl des cs-Servers ersetzen.

Danach in die rc.local das Skript reinschreiben, dass Skript noch ausfuehrbar machen(fuer root)
Das muesste zum Erfolg fuehren, aber beim naechsten mal bitte dr.google fragen
 
oder mit der genannten Kommandozeile ein extra Init-Script bauen, dann kann man den Server leicht starten und stoppen und auch Runleveln zuordnen. Als einfacher Eintrag in die lokale Boot-Liste ist es weniger flexibel.

Sowas mache ich z.B. mit meinem (zugegebenermaßen selten gebrauchten) Teamspeak und einigen anderen Diensten.
 
hallo,
danke erst einmal für die antworten.
ich habe mir mal ein paar Init-Scripte angeschaut mir ist allerdings nicht klar woher nun das system weis welcher dienst nun von welchen user gestartet wird
kann mir da einer weiterhelfen?
 
Bei den /etc/init.d - Diensten sieht das wieder anders aus.

Bei allem was auf well-known Ports (< 1024) läuft, werden intern mit setuid() die Rechte gedropped (schreckliches Denglisch).

Unter welchem User ein Dienst läuft legst du über die entsprechende Konfigurationsdatei fest, da musst du aber in die jeweilige Dokumentation schauen.

Kurzes Beispiel:

Den User für Apache legst in der

/etc/apache2/httpd.conf

fest:

# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
User apache
Group apache

Sprich, du startest als root den Apache mittels

Code:
/etc/init.d/apache2 start

der Apache "droppt" dann nach dem Starten und dem Belegen von Port 80 seine Rechte und läuft unter dem User Apache.

Bietet der entsprechende Dienst ein solches Feature nicht, musst du das manuell beim Starten mittels

Code:
su user -c dein_kommando

machen.
 
Bietet der entsprechende Dienst ein solches Feature nicht, musst du das manuell beim Starten mittels

Code:
su user -c dein_kommando

machen.
Das kann man doch aber auch ins Init-Script schreiben. Deshalb mein Vorschlag.

Daß Apache sowas aus seiner Konfig heraus kann, ist die Ausnahme. Bei allen Diensten, die das nicht können (also fast alle), im Init-Script sowas:
Code:
# Needs to *NOT* run as root, so doing "su" on a predefined special user:
TS_USER=teamspeak

[b][i][color=gray][... snip ...][/color][/i][/b]

case "$1" in
    start)
        echo -n "Starting ${NAME}... "
        [b][i][color=red]su -c "cd $TS_HOME;./$TS_BIN start" $TS_USER[/color][/i][/b]

        # Remember status and be verbose
        rc_status -v
        ;;
 

Ähnliche Themen

systemd service mit Bash Script und Subshell in einer tmux Umgebung

chown Befehl in einem Script

Start-/Stop-Scripte bei RH Linux 7 (ehemals .../rc.d/S99 .../K99

Samba 3.6.25 - OpenLDAP Setup

Samba 4.6 Ads Member Server einseitige Vertrauensstellung

Zurück
Oben