Acho que a melhor coisa a fazer é iniciar o script com sudo
e, em seguida, iniciar os processos que você deseja executar como um usuário normal explicitamente com su user
ou sudo -u user
:
#!/usr/bin/env bash
## Detect the user who launched the script
usr=$(env | grep SUDO_USER | cut -d= -f 2)
## Exit if the script was not launched by root or through sudo
if [ -z $usr ] && [ $USER = "root" ]
then
echo "The script needs to run as root" && exit 1
fi
## Run the job(s) that don't need root
sudo -u $usr commandA
## Run the job that needs to be run as root
commandB