Továbbra sem tiszta:
root-ként futtatva ennek mi értelme? Egyszerűbb és biztonságosabb a már bejáratott su/sudo parancsokkal intézni, nem?
Aztán...
setuid(0) - ennek a világon semmi értelme, eddigi ismereteim szerint. Ezt ugyanis csak root-ként lehet kiadni. Tévedek? (kipróbáltam a kódod, ha kivettem a setuid hívást, akkor sem változott a működése)
Ha a programra ráteszek egy setuid-ot és odaadom x usernek, akkor bárki, akinek joga van futtatni a programodat, x user nevében futtathat gyakorlatilag bármit és nincs semmi más ellenőrzés, mint a binárison lévő jogosultságok.
Ha tudom, hogy a script eleve rootként fut, akkor még mindig elegánsabb adott esetben egy seteuid hívással jogosultságot váltani(nem setuid, mert onnan nincs visszatérés a root-hoz), bár ettől csak a processz jogosultsága változik, a környezete nem - gondolom, e tekintetben a perl is úgy működik, ahogy a python. Viszont ahogy elnéztem, a kérdezőnek egy megadott userhez tartozó login shell kell, tehát ez nem igazán használható nála.
Szóval biztosan a felfogásom nehéz, de továbbra sem látom értelmét ennek az egésznek.