1

I have a large bash script that is supposed to install all dependencies for an application and then build the application itself.

I run the script with sudo because most of the commands require it, e. g.:

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

Then it gets to building the application:

npm install
npm run build

When the script gets to these two commands it fails, giving me the following error:

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

I did some research on this and found out that when interacting with a git repository you shouldn't use sudo.

I tried running the npm install outside of the script and it did, indeed, work, suggesting that sudo makes that command fail inside the script.

I've considered adding sudo to all the commands inside instead of running the script with sudo but I've read here that for the most part it is not considered good practice.

In the top answer I read that you can drop the sudo privileges from a single command by prepending sudo -u username to it.

Is this good practice?

And how can I make this dynamic so that instead of using my username the script uses the name of the user running the script?

2 Answers2

0

Have you considered changing the folder permissions?

You can check it by right-clicking properties on the folder in your file explorer.

Pilou
  • 29
0

One of the answers here suggested using the command logname, which prints the user's login name.

To use it inside the script I simply modify the lines

npm install
npm run build

to:

sudo -u $(logname) npm install
sudo -u $(logname) npm run build