По какой-то причине мне нужно, как пользователь, запускать без sudo script script.sh, которому нужны права root для работы.
Я видел единственное решение, которое нужно было ввести sudo INSIDE script.sh. Возьмем пример:
script.sh :
#!/bin/sh
sudo apt-get update
Конечно, если я выполню этот script, я получаю приглашение с запросом пароля. Затем я добавил в файл sudoers (в конце, чтобы переопределить все остальное):
user ALL=(ALL:ALL) NOPASSWD:/path/to/script.sh
Кстати, я также пробовал строку:
user ALL=(ALL) NOPASSWD:/path/to/script.sh
(я думаю, что я не совсем понял разницу)
Но это не решает мою проблему, если я не использую sudo для выполнения этого script:
# ./script.sh
[sudo] password for user:
# sudo ./script.sh
Starts updating...
Хорошо, поэтому я говорю себе: "Хорошо, это означает, что если у меня есть файл, который упоминается в sudoers, как и я, он будет работать без подсказки, только если я позвоню ему с sudo, чего я не хочу". < ш > Итак, хорошо, я создаю еще один script script2.sh следующим образом:
script2.sh
#!/bin/sh
sudo /path/to/script.sh
На самом деле это работает. Но я действительно не удовлетворен этим решением, особенно тем фактом, что я должен использовать 2 скрипта для каждой команды.
Этот пост предназначен для того, чтобы помочь людям, имеющим эту проблему, и искать то же самое решение (я не нашел на нем хорошую запись), и, возможно, у вас будут лучшие решения, исходящие от вас, ребята.
Не стесняйтесь делиться своими идеями!
ИЗМЕНИТЬ 1:
Я хочу настаивать на том, что это "apt-get update" было всего лишь примером FAR из того, что на самом деле есть мой script. У моего script есть много команд (с некоторыми конфигурационными файлами cd для root-access-only), и решение не может быть "Ну, просто сделайте это прямо с apt-get".
Принцип примера - помочь пониманию, а не быть оправданием для упрощения ответа общей проблемы.