[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Rechte in setuid-root-Programm



Hallo,

hat jemand eine Idee für mögliche Gründe, warum ein Programm mit setuid-root-Dateirechten (oder auch ein Programm mit besonderen Capabilities), wenn ich es als unprivilegierter Nutzer über das PAM-Modul pam_exec aufrufe, sich völlig anders verhält, als wenn ich es als unprivilegierter Nutzer über die Kommaandozeile aufrufe?

Bisher habe ich bei meinem Programm folgende Unterschiede festgestellt:

1. Wenn ich dem Programm keine setuid-root-Dateirechte gebe, sondern stattdessen die Linux-Capability cap_setuid zuteile, funktioniert das von der Kommandozeile, pam_exec verweigert aber die Ausführung des Programms (Operation not permitted).

2. Für den Verlauf des Programms muss nicht nur die effektive, sondern auch die reale UID auf 0 gesetzt sein. Dies funtioniert beim Aufruf von der Kommandozeile mit setuid(0), jedoch nicht beim Aufruf über pam_exec, dafür muss ich setreuid(0,0) nutzen.

3. Obwohl getreuid() anzeigt, dass sowohl die effektive als auch die reale UID auf 0 gesetzt sind, bekomme ich beim Aufruf über pam_exec Fehler wie "Permission denied" und "Operation not permitted". Dies war erst beim externen Programm lvcreate so; nachdem ich das nun durch die Verwendung von Bibliotheks-Aufrufen statt exec(lvcreate, ...) gelöst habe, scheitert nun selbst ein simples chown() auf einem Verzeichnis im lokalen Dateisystem. Beim Aufruf von der Kommandozeile funktioniert das natürlich alles ohne Probleme.

Was können allgemein Gründe sein, warum Operationen wegen fehlender Rechte fehlschlagen, obwohl getuid() und geteuid() beide 0 zurück geben?

Viele Grüße
  Christoph


Reply to: