Você pode verificar a variável SUDO_USER
para determinar se o script está sendo executado via sudo
e, em caso afirmativo, qual usuário o executou. Então você só usaria isso em gpasswd
:
gpasswd -a "${SUDO_USER}" docker
ou
gpasswd -a "${SUDO_USER-$USER}" docker
se você quiser voltar para USER
na ausência de SUDO_USER
.
O comando que faz com que você acabe logado como root
(estritamente falando, isso não altera seu login, ele executa um novo shell) é
newgrp docker
Para corrigir isso, ou seja, acaba sendo você mesmo com docker
como seu grupo principal, você precisa executar isso como você mesmo; assumindo sudo
,
su "${SUDO_USER}" -c "newgrp docker"
fará isso.
Observe que terminar seu script com newgrp
significa que seu script não termina assim quando você recebe um novo prompt. o resultado é
- o shell em que você está quando digita
sudo ./myscript.sh
-
%código%
- o shell executando
sudo
-
%código%
- o shell começou com
myscript.sh
como o grupo principal
- o shell começou com
-
%código%
- o shell executando
-
%código%
O script só sairá quando você sair do shell iniciado por newgrp
.