Удалите sudo из одной команды в большом сценарии Bash

У меня есть большой сценарий удара, который, как предполагается, устанавливает все зависимости для приложения и затем создает само приложение.

Я запускаю скрипт с sudo потому что большинство команд требует его, например:

apt update
apt install -y libunwind8
apt install -y curl
...

Затем это добирается до создавания приложения:

npm install
npm run build

Когда сценарий добирается до этих двух команд, он перестал работать, давая мне следующую ошибку:

/home/crispjam/.npm/_cacache/tmp/git-clone-98eb9fb8/.git: Permission denied

Я провел некоторое исследование на этом и узнал, что при взаимодействии с репозиторием мерзавца Вы не должны использовать sudo.

Я пытался работать npm install за пределами сценария и это действительно, действительно, работало, предполагая это sudo делает тот сбой команды в сценарии.

Я рассмотрел добавление sudo ко всем командам внутри вместо того, чтобы запустить скрипт с sudo но я считал здесь, что по большей части это не считают хорошей практикой.

В главном ответе я считал, что можно отбросить sudo полномочия от единственной команды путем предварительного ожидания sudo -u username к нему.

Эта хорошая практика?

И как я могу сделать это динамичным так, чтобы вместо того, чтобы использовать мой username сценарий использует имя пользователя, запускающего скрипт?

0
задан 29 March 2019 в 04:06

2 ответа

Вы рассмотрели изменение полномочий папки?

Можно проверить его путем щелчка правой кнопкой по свойствам по папке в файловом менеджере.

0
ответ дан 25 October 2019 в 07:45

Один из ответов здесь предложил использовать команду logname, который печатает имя для входа в систему пользователя.

Для использования его в сценарии, я просто изменяю строки

npm install
npm run build

кому:

sudo -u $(logname) npm install
sudo -u $(logname) npm run build
0
ответ дан 25 October 2019 в 07:45

Другие вопросы по тегам:

Похожие вопросы: