domenica 16 gennaio 2011

BASH: verifica possesso privilegi superuser

Può capitare di dover scrivere uno script per automatizzare operazioni che, del tutto o in parte, devono essere realizzate in qualità di superuser (superutente o utente root o amministratore). Se per semplificare vogliamo che l'intero script sia eseguito in modalità superuser può essere utile verificare, prima di dare il via alla sequenza di operazioni previste, se effettivamente l'utente che ha lanciato lo script possieda i privilegi di root. In altre parole si vuole verificare se lo script è stato lanciato dall'utente root o da un utente non-amministratore tramite il comando sudo (sui sistemi che lo prevedono).
Il seguente script offre un esempio di come realizzare la suddetta verifica.
  #!/bin/bash
if [ `id -u` -eq 0 ]; then
echo "Welcome My Lord"
exit 0
else
echo "Go away, miserable!"
exit 1
fi

Per un esempio più concreto, anche se molto semplice.
  #!/bin/bash
if [ `id -u` -eq 0 ]; then
rm -rf subdir
exit 0
else
echo "subdir not removed: insufficient priviliges"
exit 1
fi


Il principio di funzionamento è molto semplice: il comando id -u restituisce l'identificativo numerico relativo all'utente che ha lanciato lo script. L'identificativo dell'utente con privilegi di amministrazione è sempre 0, sia nel caso che si tratti dell'utente root in persona che di un utente semplice con l'ausilio di sudo.

NOTA: il simbolo ` non è un semplice apice e si ottiene premendo contemporaneamente AltGr e ' sulle tastiere con layout italiano(come qui).

Nessun commento:

Posta un commento