2016-12-28 3 views
0

У меня есть bash скрипт, который я бегу с sudo: sudo NewScriptзапустить конкретные команды без Sudo внутри сценария работает с SUDO Баш

Внутри сценария, у меня есть git команду, которую я не хочу работать с sudo. В настоящее время, поскольку весь скрипт запущен с sudo, эта команда также работает с sudo, и это то, что я хотел бы подавить.

Возможно ли это, или мне нужно запустить скрипт без sudo и добавить sudo для каждой команды внутри скрипта, отличной от команды git?

+1

Когда вы запускаете скрипт с 'sudo', скрипт запускается в основном так, как если бы он выполнялся пользователем root. Поэтому единственным решением, которое я могу придумать, является запуск вашей команды git с разрешениями конкретного пользователя: 'sudo -S [username] [git command]' – Dunno

+0

Если последний подход, если 'sudo' потребовал пароль, вы будет запрошен пароль для всех таких команд. – Inian

ответ

1

Один из подходов к использованию - это переход на обычные пользовательские привилегии с использованием su и запуск его динамически, чем фактическое изменение доступа.

Выполнение команд git с обычными привилегиями $USER внутри сценария.

su - "$USER" -c "git_command1; git_command2;" 

-c флаг для передачи команд в оболочке, в соответствии с man su страницы,

-c, --command = команда команда Проход к корпусу с опцией -c.

+0

То же. Я всегда так делаю, отлично работает. –

2

Обратите внимание, что sudo запускает программы как разные пользователя, не обязательно как root; root - это только по умолчанию. Таким образом, ваша цель, вероятно, не запускать вашу команду git без sudo, а скорее запустить ее как другого пользователя, чем остальные.

Если вы хотите, вы мерзавец команду, которая будет работать на жестко прописанных пользователем the_user, просто положить

sudo -u the_user <your git command> 

в сценарии (это не запросит ваш пароль, когда скрипт запускается с правами администратора) ,

Если вы не знаете, пользователя заранее, а хочет, чтобы команда git будет работать тот, кто назвал sudo newScript использования

sudo -u $SUDO_USER <your git command> 

вместо (спасибо @thatotherguy за это намеком).

+1

Вы можете использовать '$ SUDO_USER' вместо оболочки. 'sudo' устанавливает его вызывающему пользователю. –

+0

@thatotherguy спасибо, я добавил эту информацию к ответу. – Dreamer

 Смежные вопросы

  • Нет связанных вопросов^_^