Como executar um script como super usuário primeiro checando o usuário e conseguindo passar de askpass se não super usuário

6

existe uma questão semelhante lá fora Como posso determinar se um script de shell é executado como root ou não?

Eu tenho a mesma dúvida com resultado diferente

É possível, dentro do script BASH antes de tudo ser executado, verificar se o script está sendo executado como superusuário e, se não, imprimir uma mensagem dizendo Você deve ser superusuário para usar este script e, em seguida,

obter passar do usuário usando askpass ou algo assim, em seguida, executar o mesmo script como superusuário?

    
por pahnin 13.03.2011 / 15:11

2 respostas

12

Acabei de chamar o sudo se o programa precisar de permissões de root, mas não tem:

#!/bin/bash
if [ $(id -u) != 0 ]; then
   echo "This script requires root permissions"
   sudo "$0" "$@"
   exit
fi

"$0" contém o nome do script, "$@" argumentos opcionais. Pode ser omitido se o seu programa não aceitar argumentos.

Nota: espera-se que este shellscript seja executado em um shell, se esse script for executado como GUI, use algo como gksu ou kdesudo em vez de sudo .

    
por Lekensteyn 13.03.2011 / 15:14
-1

isso não funciona, embora Lekensteyn esteja certo no ponto.

você tem que definir a variável igual à saída de id -u

ID=$(id -u) if [ $ID != 0 ] then sudo "$0" "$@" exit fi

se você usar echo para a saída this script requires root permissions que será exibida toda vez que um usuário diferente de root (desde seu id = 0) executar o script, independentemente de precisar ou não de permissões de root, mantenha-o simples .

    
por deputy_D 01.04.2016 / 17:07