Различаются ли эти команды по существу или только семантически?

Различаются ли эти команды по существу или только семантически?

В сценарии оболочки, который curlизвлекает скрипт, а затем выполняет его, существенно ли различаются эти два подхода?

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

...против...

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

Что-то в sudoправой части curlвторой команды заставляет меня задуматься, но я не могу сформулировать, отличается ли она (рискованнее?) от первой.

решение1

Существует ряд существенных различий.

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

запускается curlот имени текущего пользователя и от имени пользователя root; перед записью в него teeон также очищает содержимое ./usr/bin/dosomething.sh

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

запускается curlкак root и пытается выполнить добавление /usr/bin/dosomething.shс правами текущего пользователя (текущая оболочка устанавливает перенаправление).

Связанный контент