Unterscheiden sich diese Befehle materiell oder nur semantisch?

Unterscheiden sich diese Befehle materiell oder nur semantisch?

Unterscheiden sich diese beiden Ansätze in einem Shell-Skript, das curlzum Abrufen und anschließenden Ausführen eines Skripts verwendet wird, wesentlich?

curl http://address-to-some-script/dosomething.sh | sudo tee /usr/bin/dosomething.sh

...gegen...

sudo curl http://address-to-some-script/dosomething.sh >> /usr/bin/dosomething.sh

Irgendetwas an dem „ sudoRechts davor“ curlim zweiten Befehl gibt mir zu denken, aber ich kann nicht klar sagen, ob und wie es sich vom ersten (riskanter?) unterscheidet.

Antwort1

Es gibt eine Reihe wesentlicher Unterschiede.

curl http://address-to-some-script/dosomething.sh | sudo tee /usr/bin/dosomething.sh

curlwird als aktueller Benutzer und als Root ausgeführt tee; außerdem wird der Inhalt gelöscht, /usr/bin/dosomething.shbevor darauf geschrieben wird.

sudo curl http://address-to-some-script/dosomething.sh >> /usr/bin/dosomething.sh

wird als Root ausgeführt und versucht , mit den Berechtigungen des aktuellen Benutzers curlanzufügen (die aktuelle Shell richtet die Umleitung ein)./usr/bin/dosomething.sh

verwandte Informationen