Frage

In Ordnung, so meine Frage ist einfach, aber ich bin ein bisschen neu in C und ich habe gehofft, dass mir jemand helfen könnte. Ich möchte auf einen anderen Benutzer in C zu ändern Zum Beispiel, ich weiß, das Kennwort des Benutzers, und wenn der Benutzer tippt: ./change user1 Es wird benutzer1 ändern. Ich weiß, das jetzt ein Sicherheitsproblem sein kann, aber ich bin nicht um die Sicherheit zur Zeit besorgt.

War es hilfreich?

Lösung

Sie werden zur Verwendung setuid- wollen, die in unistd.h gefunden werden kann, so dass es auf POSIX-Systemen verfügbar ist (so dass jeder Linux / Unix falvour sollte ok sein)

Aus der Manpage

  

Wenn der Prozess den entsprechenden Berechtigungen, setuid- hat () wird die reale Benutzer-ID festgelegt,     effektive Benutzer-ID und die gespeicherten Satz-Benutzer-ID des anrufenden Prozesses uid.

     

Wenn der Prozess nicht über die entsprechenden Berechtigungen, aber uid ist gleich der realen     Benutzer-ID oder die gespeicherte Set-User-ID, setuid () den wirksamen Benutzer-ID uid gesetzt;     der reale Benutzer-ID und gespeichert set-user-ID bleiben unverändert.

     

Die setuid () Funktion wird nicht die zusätzliche Gruppenliste in irgendeiner Weise beeinflussen.

Hier ist ein Beispiel

Andere Tipps

Rufen Sie die su binär (wie durch system() oder eine Kombination aus fork() und einer der exec Funktionen), die alle kennt die Feinheiten der wechselnden Anmeldeinformationen, sowohl Unix-generisch und auf Ihre speziellen OS. Das Terminal wird geteilt und fährt mit dem ursprünglichen Benutzer gehören.

Einige dieser Feinheit nicht durch einen einfachen setuid() Anruf behandelt sind Gruppen, Konto zu deaktivieren und Ressourcengrenzen.

Wenn dies nur zum Spaß ist, voran setuid() von setgid() und initgroups() wird wahrscheinlich für Sie ausreichend sein.

Sie müssen die Benutzer-ID herauszufinden, mit getpwuid () . Anschliessend haben Sie die UID in Ihrem Programm setzen mit setuid () durch die Anwendung gefolgt / Funktion, die Sie Absicht mit diesen neuen Rechten zu laufen, zB die Muschel. Um eine Anwendung mit der Strom UID Verwendung system () zu starten .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top