Server als User mit root Rechten starten lassen ohne die Rechte dafür zu besitzen?
-
Ich möchte einen Serverdienst programmieren, der von GUI Clients aus gestartet werden soll, sofern er noch nicht läuft.
Die GUI Clients laufen dabei mit normalen Userrechten des Benutzers.
Der Server soll allerdings unter eigenen Rechten laufen, dies können root Rechte aber auch andere Serverdienstrechte sein (welche könnte man da nehmen?).Meine Frage ist nun, wie ich realisieren kann, dass der Server gestartet wird,
wenn der GUI Client gestartet wird, ohne dass der Nutzer nach Adminrechten gefragt wird oder eine sudo Konfiguration für diesen Benutzer vorliegen muss?Ich könnte zwar den Server auch einfach beim Booten starten lassen, aber das wollte ich eigentlich vermeiden, da er nur bei Bedarf gestartet werden soll.
-
setuid
-
Das einfachste ist tatsächlich das Verwenden des SUID Bits. https://de.wikipedia.org/wiki/Setuid
Aber der Vollständigkeit halber sollte man dich darauf hinweisen, dass das verwenden ohne weitere Sicherheiten Sicherheitslücken ins System reißt. Solltest du in deinem Serverprogramm eine simple Lücke haben, hätte ein Angreifer einen sehr effizienten Angriffsvektor.
LG
-
Nur mal so - braucht der Server denn überhaupt Root-Rechte ?
-
Sowas macht man wohl eher mit Socket Activation. Dein Daemon wird dann von einem Supervisor-Prozess gestartet. Moderne Init-Systeme haben sowas bereits integriert. Wenn das bei dir nicht der Fall ist, guck dir mal die üblichen Superserver an.