У меня есть большой сценарий удара, который, как предполагается, устанавливает все зависимости для приложения и затем создает само приложение.
Я запускаю скрипт с 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
сценарий использует имя пользователя, запускающего скрипт?
Вы рассмотрели изменение полномочий папки?
Можно проверить его путем щелчка правой кнопкой по свойствам по папке в файловом менеджере.
Один из ответов здесь предложил использовать команду logname
, который печатает имя для входа в систему пользователя.
Для использования его в сценарии, я просто изменяю строки
npm install
npm run build
кому:
sudo -u $(logname) npm install
sudo -u $(logname) npm run build