Daemon-programmierung: Benutzer automatisch durch CMake erstellen lassen



  • Hallo zusammen,

    Ich entwickle ein Daemon-programm. Dadurch dass mittlerweile mehr Leute als nur ich dieses Programm verwenden, muss das ding nun auch etwas sicherer werden. Deshalb sollte der Daemon nicht mit root-rechten laufen. Dies überprüfe ich wie folgt:

    if (getuid() == 0 || geteuid() == 0) {
        struct passwd *pw = getpwnam(DAEMON_USER);
        if ( pw ) {
            setuid( pw->pw_uid );
        } else {
            // loggen
           exit(0);
        }
    }
    

    Somit wird nur erlaubt den Daemon als User auszuführen. Sollte er als root ausgeführt werden, wird DAEMON_USER als aktueller Benutzer gesetzt. Soweit so gut. Installiert wird der Daemon normalerweise mit CMake makefiles.
    Ziel ist es, dass bei der Installation automatisch ein Benutzer für den
    Daemon angelegt wird, der dann verwendet wird. Die Frage ist nur wie?
    bzw. wie wird das im Allgemeinen gehandhabt? Sollte der Daemon den user selbst beim ersten Start erzeugen?

    Danke

    gruß, benben



  • Ich würde nicht wollen das ein Programm oder ein Makescript automatisch einen Benutzer anlegt. Immerhin weiß es gar nicht wie ich gerne meine Benutzer will.

    Ich kenne von Software eigentlich auch nur das sie warnt wenn sie als root ausgeführt wird und trotzdem läuft, oder sich nach der Warnung beendet.



  • User anlegen ist keine Aufgabe des Buid & Installationsprozesses. In der Regel muss man das entweder selber machen, oder das wird vom Package Manager gemacht. Der Packagemanager weiß, dass Packate mysql einen Benutzer braucht und legt ihn an. Das Install Script von MySQl legt aber den Benutzer nicht selber.



  • Hallo

    Danke, gut zu wissen.
    Dann werde ich beim starten als root darauf hinweisen dass ein Benutzer angelegt werden muss (mit entsprechender Hilfestellung) und werde in den deb-paketen das postinst script entsprechend anpassen.

    Danke



  • Ich würde das in der Doku festlegen/aufzeichnen. Wenn du ein config file hast würde ich hier einen Eintrag mit dem username machen. Wenn nicht, vielleicht Übergabe bei Programmstart. Wenn wir beim oberen Beispiel schon sind: mysqld macht es auch so: Übergabeparameter: --user mysql. Hat den vorteil das variable zu lassen.


Anmelden zum Antworten