Probleme beim wechsel der real UID während der Ausführung
-
Hi ich hab ein Programm, das auf die Funktion ioperm zugreift. Der Zugriff erfordert root-Rechte.
Jetzt wollte ich das Programm jedoch auch von Usern ausführen lassen. Aber irgendwie bekomme ich es nicht hin.Hier ist mein Beispielcode:
#include <iostream> #include "Driver.h" #include "Relais.h" using namespace std; int main() { if (setuid(0)!=0) { perror("Fehler bei den Rechten"); exit(1); } ...
als User bekomme ich immer Speicherzugriffsfehler auch wenn die Rechter der Datei auf 7777 stehen.
Ich bekomme immer von perror: Operation not permitted.Mit root geht es wunderbar.
Die Partition ist nicht mit der nosuid Option gemountet sondern nur mit atime.
Muss ich da was im kernel aktivieren?
Gruß Alex
-
Wäre schlimm, wenn das so einfach ginge, root-Rechte zu erhalten. Nur root kann mit setuid den Benutzer wechseln.
-
vielleicht versteh ich da was falsch,
aber wenn der besitzer der datei (app) root is und chmod u+s macht dann sollt der user das prog ausfuehren koennen (group + rechte entsprechend setzen) und sachen wie zb inb outb usw sollten funktionieren.
-
Genau das ist ja mein Problem. Ich setze ja das s-Bit für den User. Aber bei setuid(0) kommt immer wieder Permission not permitted. Daher die Frage muss ich da vielleicht was im Kernel setzen?
Gruß Alex
-
@daHa: Ah jetzt. Du hast es mir jetzt nochmal genau aufgeschlüsselt. Ich dachte, die Datei müsste mir gehören und dann mit root das s-Bit setzen.
Jetzt hab ichs kappiert und es funktioniert.Danke