User Id



  • Hallo an Alle.
    ich bin gerade dabei einen kleinen Server zu programmieren,der auf einem Port<1024 auf einer Linux Maschine aktiv sein soll.
    Er funktioniert auch schon recht gut,allerdings möchte ich ihn gerne nach dem Start nicht weiterhin als root,sondern als unpreviligierten Nutzer laufen lassen,damit sich mögliche Fehler nicht sofort gravierend auswirken.Ist das per setuid(5**) möglich,oder ist der Ansatz schon falsch?
    MFG,
    zero.



  • setuid(getuid());
    

    getuid liefert die reelle User ID zurück. geteuid die effektive 🙂

    man: getuid(2)



  • Das meinte ich eigentlich nicht.
    Ich wollte wissen,ob allein schon das setzen der UID den Prozess sicherer macht,weil er bei einem Overflow dann nicht automatisch 'root' als Besitzer hat.
    Nebenbei:welchen Sinn macht es,mit setuid(getuid)); zunächst die aktuelle UID abzufragen um sie dann auf den soeben festgestellten Wert zu setzen?
    MFG
    zero



  • Ich wollte wissen,ob allein schon das setzen der UID den Prozess sicherer macht,weil er bei einem Overflow dann nicht automatisch 'root' als Besitzer hat.

    ja

    Nebenbei:welchen Sinn macht es,mit setuid(getuid)); zunächst die aktuelle UID abzufragen um sie dann auf den soeben festgestellten Wert zu setzen?

    das ist eben der Unterschied zwischen reeller und effektiver User ID. Wie gesagt, schau dir die geteuid und getuid manpages an. setuid(getuid()); ist der übliche Weg um suid Rechte wieder abzugeben.


Anmelden zum Antworten