setuid(0) funktioniert nicht trotz effektiver Root-UID
Hallo,
ich habe ein Binary mit Rechten 4755, das nach dem Starten durch einen
Nutzer ohne Root-Rechte mit Hilfe von setuid(0) nicht nur die effektive
und die gespeicherte, sondern auch die reale UID auf 0 setzen soll
(lvcreate braucht das wohl).
Das funktioniert auch, wenn ich das Programm manuell in der bash
aufrufe. Allerdings soll es letztlich vom PAM-Modul pam_exec aufgerufen
werden, doch da funktioniert setuid(0) nicht wie gewünscht, sondern die
reale UID bleibt die des aufrufenden Nutzers. Wenn ich die Dateirechte
nicht auf suid-root setze, sondern stattdessen explizit die Capability
cap_setuid für das Binary setze, wird aus dem PAM-Modul heraus sogar die
Ausführung des Programms mit "execve: Operation not permitted" ganz
verweigert, wohingegen auch das beim Aufruf aus der Bash-Befehlszeile
funtioniert.
Kann jemand mögliche Gründe nennen, warum im einen Fall die Ausführung
nicht wie gewüscht funktioniert, obwohl zum Programmstart alle drei UIDs
(reale, effektive und gespeicherte) jeweils denselben Wert haben wie im
anderen, funktionierenden Fall?
Viele Grüße
Christoph
Reply to: