Linux C Programmierung wird als Benutzer ausgeführt

9

Ich habe ein Programm, das ich als root ausführe. Ich möchte, dass das Programm eine andere Anwendung als normaler Benutzer ausführt. Ich habe setgid() ausprobiert und es funktioniert, aber ich kann dann nicht zu root oder einem anderen Benutzer zurückkehren. Das Programm vorerst ist sehr einfach;

%Vor%

Wie kann ich das tun? Es ist wie die Aktion des Befehls su $user-c $command

    
Dominik Brzeziński 27.09.2013, 10:02
quelle

3 Antworten

5

Wenn Sie fork+exec verwenden, können Sie euid des untergeordneten Prozesses ändern, während Sie als root im übergeordneten Element bleiben. Der Code könnte etwa so aussehen:

%Vor%     
Klas Lindbäck 27.09.2013, 10:28
quelle
2

Aus dem Setuid-Handbuch: [if caller was root] it is impossible for the program to regain root privileges .

Was versuchst du zu tun? Sie könnten SUID-Bit auf Ihr Programm setzen und es als Benutzer ausführen - dann können Sie mit seteuid temporär Root-Privileges löschen und Benutzer anruft, dann setzen Sie die Rechte wieder zurück. Wenn Sie es wirklich als root ausführen müssen - ich denke, Sie sollten fork (), einen Prozess als root, und einen anderen als setuid ().

    
keltar 27.09.2013 10:12
quelle
2

Wenn Sie eine Sache als normaler Benutzer und eine andere als root ausführen möchten, können Sie Fork und Setuid im untergeordneten Prozess immer so einrichten, dass Sie keine Root-Rechte haben, während Sie sie für den anderen Teil Ihres Programms beibehalten. p>     

dave 27.09.2013 10:21
quelle

Tags und Links