Check Se um script é executado como root?

2

Eu tenho um script que requer privilégios de root. Eu tenho que executá-lo via sudo ou de uma conta com o uid 0 (por exemplo, root).

Se o script não for executado com direitos suficientes, quero que o script faça eco a "Run as Root" e saia da 1.

Como posso conseguir isso?

    
por The KingMaker 15.11.2013 / 17:06

2 respostas

7
#!/usr/bin/env bash
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 
   exit 1
fi

// Rest of the script here

Source .

EUID é o UID efetivo no qual o script está sendo executado.

[[ne]] é um teste não igual.

0 é o uid de root (ou melhor, o uid que você quer. O nome root é o nome mais comum, mas que pode ser alterado e pode haver várias contas com uid 0

    
por 15.11.2013 / 17:17
2

Você também pode tornar o script apenas executável pelo root.

chmod 700 script (apenas o proprietário do arquivo pode executar o script)

chown root:wheel script (define o proprietário do arquivo para root)

    
por 15.11.2013 / 18:14