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;
Wie kann ich das tun? Es ist wie die Aktion des Befehls su $user-c $command
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:
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 ().