Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Commandoaufruf aus einem SUID-C-Programm.

  1. #1
    c-newbie
    Gast

    Commandoaufruf aus einem SUID-C-Programm.

    Hallo,

    ja, ich weiss, dass "system()" böse ist, es ist aber nur für mich zu Testzwecken. Ich wollte sowas machen:

    main ()
    {
    printf("bitte schoen: %s\n",system("/bin/cat /etc/shadow"));
    }
    Es tretten dabei 2 Probleme auf.

    1) Wenn ich es als _nicht_root_ ausführe, bekomme ich:
    /bin/cat: /etc/shadow: Keine Berechtigung
    Speicherzugriffsfehler
    also funktioniert SUID überhaupt nicht. In der man-Page von 'system' steht was von, dass es wegen Sicherheit unterdrückt wird, aber wie kann ich dann sowas machen, wenn ich System-Befehle aus einem SUID-C-Program wirklich brauche?

    2) Wenn ich es als root ausführe, bekomme ich zwar den gewünschten output, aber es wird irgendwie unabhängig von meinem printf ausgegeben, dh erst der Inhalt der shadow und erst zu letzt folgt dann mein "bitte schoen: (null)"

    Könnte mir jemand kurz helfen?
    Danke
    Martin, der C-newbie

  2. #2
    Registrierter Benutzer Avatar von Trillian
    Registriert seit
    26.04.2001
    Beiträge
    180
    man system:
    Code:
    RETURN VALUE
           The value returned is -1 on error (e.g. fork failed),  and  the  return
           status  of  the command otherwise.
    cat schreibt den Text auf stdout, deswegen kriegst du ihn noch zu sehen. Erst nachdem cat durchgelaufen ist returned system() und printf() schreibt seine Augabe auf stdout.

  3. #3
    c-newbie
    Gast
    OK, danke und wie sieht es mit Befehlsausführung aus einem SUID-C-Programm ?

    Danke
    Martin

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •