Wie erstelle ich einen Linux-Benutzer mit C / C ++?

8

Ich möchte ein -Programm erstellen, das einen Benutzernamen als Parameter verwendet und den Benutzer und seinen Home-Ordner erstellt (mit einigen hartcodierten Spezifikationen wie Ordner und Sicherheitschecks wie Benutzername kann nicht root sein oder ein bestehender Benutzer).

Meine Anwendung muss Benutzer erstellen, um SSH Zugriff zu gewähren.

Das Programm wird mit sudo ausgeführt. Ich habe gelesen, dass es in C oder C ++ anstelle von Skripten geschrieben werden sollte, weil Skripte leicht ausgenutzt werden könnten.

  • Können Sie mir einige Ratschläge oder gute Praktiken geben, wie Sie das erreichen können?
  • Soll ich eine Pam -Bibliothek verwenden? Gibt es Beispiele?
  • Was sind die möglichen Sicherheitslücken?

Ich kenne C / C ++ und benutze Ubuntu Lucid.

Bearbeiten:

Der Benutzer hat nur sudo-Zugriff, um diesen spezifischen Befehl auszuführen, ich möchte nicht, dass er eine Shell ausführen oder einige Programme umgehen kann (z. B. durch Ändern der PATH-Umgebung).

Daher muss ich zum Beispiel den PATH überschreiben, um was sollte ich mich sonst noch kümmern?

    
Weboide 10.08.2010, 22:49
quelle

3 Antworten

10

Wahrscheinlich ist Ihre beste Wette, useradd aufzurufen; es wird die richtigen Dinge tun (bei entsprechenden Parametern).

Der Versuch, einen manuell durch Aufruf der entsprechenden APIs zu erstellen, ist möglich, aber nicht wünschenswert.

    
MarkR 10.08.2010, 22:53
quelle
6

Sie meinen wie adduser oder useradd ? Schau dir ihren Quellcode an.

    
Borealid 10.08.2010 22:50
quelle
5

Dafür gibt es keine API. Sie schreiben nur in /etc/passwd und /etc/group (und möglicherweise auch in die Schattenversionen), indem Sie normale Dateizugriffs-Systemaufrufe verwenden.

    
Ken Bloom 10.08.2010 22:59
quelle

Tags und Links