c-newbie
29-12-2003, 03:04
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
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