Следуя принципу наименьших привилегий, запускайте как можно меньше прав root. Поэтому sudo изнутри скрипта.
Обратите внимание, что при первом появлении команды, которой требуется sudo, вам может быть предложено. (Это не будет правдой, если вы примените NOPASSWD в /etc /sudoers, это метод, который многие люди будут избегать, поскольку он также небезопасен.) Тем не менее, когда вы запустите sudo и введете пароль, sudo запомнит успех на некоторое время. По умолчанию этот период составляет пять минут. Поэтому, если вы запустили "sudo echo hi", набрали свой пароль и вскоре после этого запустили сценарий, вам не нужно будет запрашивать пароль при запуске сценария. Более реалистично, если вы просто запустите сценарий, вас, скорее всего, попросят выполнить sudo один раз ... при условии, что вашему сценарию потребуется менее минуты, чтобы выполнить оставшиеся задачи.
Я мог бы не беспокоиться о нескольких echo
командах, но если есть существенный контент, который можно сделать без дополнительных разрешений, тогда, в целях безопасности, я обычно хотел бы максимизировать, сколько делается с минимальным повышением.
В качестве примера минимизации разрешений, позвольте мне показать вам другой пример сценария. Вместо:
sudo -c "sample-command >> /var/log/output.txt"
Мне нравится использовать:
sample-command | sudo tee -a /var/log/output.txt >> /dev/null
При этом вся команда выполняется без sudo, и единственная часть, которая в конечном итоге имеет расширенные разрешения, - это часть, для которой необходимы расширенные разрешения, то есть та часть, которая записывает в файл.
Ясно, что моя цель здесь - минимизировать, сколько сделано поднятым. Точно так же, если весь ваш сценарий не требует повышения прав, предпочтительный подход (с точки зрения безопасности) состоит в том, чтобы минимизировать, сколько сделано повышенного уровня.