Перестаньте быть пользователем root в середине скрипта, который запускался с помощью sudo
Существует список команд, которые успешно выполняются, только если им предшествуетsudo
.
Существует еще один список команд, которые выполняются только тогда, когда пользователь запускает их безsudo
.
Я хочу выполнить все эти команды из одного сценария.
Я хотел бы избежать необходимости делать следующее:
#!/usr/bin/env bash
sudo sudo_command_one;
sudo sudo_command_two;
sudo sudo_command_three;
non_sudo_command;
sudo sudo_command_four;
Причина этого в том, что у sudo есть тайм-аут, и эти команды, вероятно, займут много времени. Я не хочу быть обремененным необходимостью периодически вводить пароль sudo. Возможно, я мог бы продлить тайм-аут sudo на неопределенный срок, но я бы также предпочел этого избежать, если есть более простой способ.
Поэтому я собираюсь запустить скрипт так:
sudo ./script
Но это предотвратит работу команд не-sudo.
Какие недостающие команды мне нужны:
#!/usr/bin/env bash
sudo_command_one;
sudo_command_two;
sudo_command_three;
[turn sudo off for a moment]
non_sudo_command;
[ok, turn sudo back on]
sudo_command_four;
К сожалению, порядок команд нельзя изменить, так что сначала я запускаю все команды sudo, а затем все команды не-sudo (или наоборот).