Wie zu verwenden setuid() von root zu user, mit der Möglichkeit, immer wieder auf root später?

Ich versuche zu tun, die sichere Sache, und ein Programm haben, das muss als root läuft, um zu lassen Ihre Vorteile, wenn Sie es nicht benötigen. Dies funktioniert gut, wenn ich chmod meine binary mit dem SUID-bit, und machen es gehören root, als jetzt habe ich UID = einige Benutzer, und EUID = root, so kann ich mit seteuid(0) und seteuid(getuid()) entsprechend zu erhöhen und die drop-admin-Rechte.

Aber wenn ich sudo statt setzen der SUID, dann UID= EUID == 0, und so ruft seteuid(getuid()) keine Wirkung haben. Und ich kann nicht einfach ändern UID auf einen Wert von einigen zufälligen Benutzer, als der setuid() Mann Seite klar, dass wenn er aufgerufen wird, ein Programm als root ausgeführt werden, verliert man die Rechte für das gute, ohne Hoffnung Sie wieder.

So, wie mache ich mein Programm verlieren vorübergehend Ihre Privilegien bei der Ausführung mit sudo?

  • Brauchen Sie, um zurückzukehren, um die UID des Benutzers, der lief sudo oder nur um eine zufällige, weniger privilegierten Benutzer?
  • Ich werde dich für nobody. aber wenn Sie wissen, ein einfacher Weg, um die sudo-Anrufer, ich bin interessiert.
  • meh, es ist einfach, müssen nur getenv("SUDO_UID").
InformationsquelleAutor Florian | 2010-02-16
Schreibe einen Kommentar