Re: Berechtigung bei sudo echo foo > bar
Am Donnerstag, 27. Oktober 2005 13:54 schrieb Frank Küster:
> Nein, ich meine eher "sudo sh -c 'echo foo > bar'". Wobei ich mir
> gerne erklären lasse, warum meine Variante nicht funktioniert:
>
> $ sudo 'echo foo > /etc/bar'
> sudo: echo foo > /etc/bar: command not found
>
> (und nein, mit /bin/echo geht es auch nicht).
Das liegt vermutlich daran, dass sudo seinen ersten Parameter als Namen
einer ausführbaren Datei interpretiert. Bei dem Befehl
sudo 'echo foo > bar'
würde also der gesamte String 'echo foo > bar' (ohne die
Anführungszeichen) als Name einer ausführbaren Datei angesehen, die
aber nicht gefunden wird (--> command not found).
Bei dem Befehl
sudo sh -c 'echo foo > bar'
hingegen werden an sudo drei Parameter übergeben, von denen der erste
(hier "sh") als Name der auszuführenden Datei angesehen wird (wobei
sudo offenbar schlau genug ist, im PATH nachzugucken), und die beiden
anderen ("-c" und "echo foo > bar") an sh als Parameter durchgereicht
werden. sh ist nun im Gegensatz zu sudo in der Lage, den übergebenen
String "echo foo > bar" nach den Regeln der sh-Syntax zu parsen und
geht wie erwartet damit um.
Bitte korrigiert mich, wenn da was nicht stimmt.
Viele Grüße, Ole
Reply to: