Desejo exigir que um script bash seja executado como o usuário atual sudo
, mas evito que ele seja executado se ele foi executado diretamente como usuário raiz. Isso ocorre porque estou executando algumas ações de configuração para o usuário atual que exigem permissões de root, mas dependem da SUDO_USER
variável de ambiente que está sendo definida.
Isto é o que eu tenho no momento:
#!/usr/bin/env bash
# Require script to be run via sudo, but not as root
if [[ $EUID != 0 ]]; then
echo "Script must be run with root privilages!"
exit 1
elif [[ $EUID = $UID && "$SUDO_USER" = "" ]]; then
echo "Script must be run as current user via 'sudo', not as the root user!"
exit 1
fi
Isso é confiável como está? Estou um pouco inseguro quanto à verificação de se EUID
e UID
correspondência, pois não sei se UID
sempre é definido corretamente de maneira confiável. Seria simplesmente o suficiente para verificar se SUDO_USER
está vazio?
sudo
". Seu código não pode diferenciá-lo.