Teste se você é root e, se não, reinicie com sudo
, por exemplo:
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "$@"
fi
Estou escrevendo um script de shell, que precisa ser executado com privilégios de root.
Posso verificar se um usuário tem privilégios de root com sudo -nv || echo "no sudo"
, mas isso não me ajuda, se as credenciais dele ainda estiverem armazenadas em cache por sudo
, mas ele não chamou meu script com ele. Então não tenho como reagir a um usuário, não chamando meu script com sudo.
Eu poderia colocar sudo
na frente de todos os comandos que precisam, então verificar se o usuário tem privilégios de root seria suficiente, mas parece-me que deveria haver uma solução melhor.
Estou procurando um comando, que eu possa colocar no meu script, que peça ao usuário privilégios de root e, se fornecido, execute o restante do script, como se o usuário o chamasse com privilégios de root no primeiro. lugar.
O que eu quero:
#!/bin/bash
if ! command; then # what I'm looking for
echo "This script needs root privileges."
exit 1
fi
mv /bin/cmd1 /bin/cmd2 # requires root
Editado 2 vezes
Teste se você é root e, se não, reinicie com sudo
, por exemplo:
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "$@"
fi
Acredito que o que você está tentando realizar é garantir que o usuário execute um script como root.
Para fazer isso, você não deseja adicioná-lo ao script, mas apenas alterar a propriedade do arquivo e as permissões de execução. Isso pode ser feito com:
# chmod og-rx yourscript.sh
# chown root:root yourscript.sh
(por muru =])
ou
# chmod 750 yourscript.sh
# chown root:root yourscript.sh
(cremefraiche)
Agora que o arquivo pertence a root e as permissões estão definidas corretamente, ele não pode ser aberto por um usuário, a menos que ele sudo.
Tags sudo root shell-script