Berechtigungsprobleme im Programm setuid-root
Ich habe ein Programm geschrieben, kompiliert, nach / usr / local / bin / kopiert und ihm die setuid-root-Datei erteilt.
Leider kann ich das Programm aufgrund von Berechtigungsproblemen nicht wie gewünscht ausführen. Das heißt, es läuft gut, wenn ich es als nicht privilegierter Benutzer von der Befehlszeile aus anrufe, aber es gibt Fehler, wenn ich es als nicht privilegiertes Programm aufrufe Benutzer vom PAM-Modul pam_exec - und so möchte ich es am Ende verwenden.
Bisher hatte ich folgende Unterschiede zwischen dem Aufruf von der Befehlszeile und dem Aufruf von pam_exec:
Wenn ich dem Programm nicht die setuid-root-Datei erlaube, sondern ihm die Linux-Funktion cap_setuid gebe, funktioniert das von der Kommandozeile aus, aber mit pam_exec wird das Programm überhaupt nicht ausgeführt, mit dem Fehler "Operation nicht erlaubt".
Für die weitere Ausführung des Programms muss nicht nur die effektive, sondern auch die reale UID 0 sein. Von der Befehlszeile aus funktioniert dies, wenn ich setuid (0) im Programmcode verwende. Bei pam_exec schlägt setuid (0) jedoch fehl Um die reale UID zu ändern, muss ich stattdessen setreuid (0,0) verwenden.
Obwohl echte und effektive UID 0 sind, erhalte ich immer noch Fehler wie "Permission denied" und "Operation unzulässig", wenn das Programm von pam_exec aufgerufen wird. Dies geschah beim Ausführen des externen Befehls lvcreate von meinem Setuid-Root-Programm aus, und nachdem ich das jetzt gelöst habe, indem ich stattdessen lvm-dbus-Bibliotheksaufrufe verwendet habe, bekomme ich sogar eine "Operation unzulässig", wenn ich ein einfaches chown () für ein Verzeichnis in mache das lokale Dateisystem. Das funktioniert natürlich perfekt, wenn ich mein Programm von der Kommandozeile aus starte.
Alle möglichen Gründe, warum sich ein Programm mit setuid-root-Dateiberechtigung (oder ein Programm mit speziellen Linux-Fähigkeiten), wenn es von einem nicht privilegierten Benutzer aus dem PAM-Modul pam_exec aufgerufen wird, ganz anders verhält, als wenn es von einem nicht privilegierten Benutzer von aufgerufen wird die Befehlszeile? Oder wie ist es überhaupt möglich, dass Fehler "Operation nicht erlaubt" und "Berechtigung verweigert" auftreten, obwohl sowohl getuid () als auch geteuid () 0 zurückgeben?
Grüße Christoph
0 Antworten auf die Frage
Verwandte Probleme
-
3
Ubuntu Server mit GNOME Desktop Envinronment - Einstellen der Apatche-Konfigurationsdateiberechtigun...
-
2
Wie kann ich zulassen, dass Programme, die Administratorrechte benötigen, beim Start in Vista ausgef...
-
1
Windows kann während des Speicherns von chkdsk und Office nicht auf die Festplatte schreiben
-
5
Gibt es eine Möglichkeit, eine geplante Aufgabe unter Windows XP auszuführen, ohne den Benutzernamen...
-
3
Wie kann ich verhindern, dass andere Personen den Inhalt meines Heimatverzeichnisses sehen, außer de...
-
8
Wie kann ich allen Benutzern in Linux Schreibzugriff auf einen Ordner gewähren?
-
7
Löschen nicht wiederherstellbarer Dateien in Vista
-
1
Zugriff auf das ehemalige XP-Laufwerk als zweites Laufwerk unter Windows 7
-
5
Zugriff auf das alte XP-Laufwerk als zweites Laufwerk unter Windows 7 ohne Chowning
-
1
Was ist der Unterschied zwischen den Standardgruppen unter Mac OS X?