выполните команду aws в скрипте с помощью sudo

#bash #amazon-web-services #command-line-interface

Вопрос:

Я запускаю bash скрипт с sudo помощью и попробовал ниже, но получаю ошибку ниже с помощью aws cp . Я думаю, проблема в том, что скрипт ищет config то, в /root чем его нет. Однако разве это не -E сохраняет исходное местоположение? Есть ли опция, с помощью которой можно aws cp передать местоположение config . Спасибо вам :).

 sudo -E bash /path/to/.sh
   - inside of this script is `aws cp`
 

Ошибка

 The config profile (name) could not be found


I have also tried `export` the name profile and `source` the path to the `config`
 

Комментарии:

1. Вы пробовали поместить все в один и тот же каталог(скрипт,файл для копирования и т.д.)?

2. Таким образом, скрипт вызывается из одного каталога…. создает кучу новых каталогов и копирует все новые каталоги в aws . Если я не использую sudo aws cp это нормально и не возвращает ошибок…. проблема в том, что мне нужно sudo создать новые каталоги. Исходный config файл в $HOME/user/aws . Спасибо вам :).

3. Находятся ли новые каталоги в защищенном пути? В этом случае вы не можете добавить пользователя в ту же группу?

4. каталоги находятся в защищенном пути, и я не думаю, что можно добавить пользователя в ту же группу, но я проверю. Кроме этого, есть ли другие варианты? Может быть , я мог export HOME=/root бы и скопировать $HOME/user/.aws в /root/.aws , так что есть два каталога с учетными данными. Я не думаю, что это вызовет проблемы? Спасибо вам :).

5. Да, вы также можете это сделать или просто создать символическую ссылку из /root/.aws в /home/user/.aws

Ответ №1:

Вы можете использовать оригинального пользователя, как :

 sudo -u $SUDO_USER aws cp ...
 

Ответ №2:

Вы также можете запустить скрипт, используя source вместо bash — использование source приведет к запуску скрипта в той же оболочке, что и ваше открытое окно терминала, в котором будет сохранен один и тот же env (например, пользователь) — хотя, честно говоря, ответ @Philippe лучше, более правильный.