Scripts et Programmation

BASH : Tester si un script est lancé en root

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction



Dans ce court article, nous allons voir comment tester, dans un script BASH si celui ci est utilisé en tant que root.
Ici, la vérification est fonctionnelle si :
- Le script est lancé en tant que root directement.
- Le script est lancé avec la commande su -lc 'lescript.sh'
- Le script est lancé avec la commande sudo lescript.sh

Nous n'utiliserons pas la variable $EUID

Commandes de base



Nous allons utiliser la commande id qui nous affiche les informations de l'utilisateur :
Code BASH :
id

Code :
uid=0(root) gid=0(root) groupes=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),26(tape),27(video)


La caractéristique de root est que son UID est de 0. On récupérera cette valeur avec l'option -u :

Code BASH :
id -u

Code TEXT :
 0 


A partir de là, il ne reste qu'un simple test à faire, et si cette valeur n'est pas 0, on peut quitter le script avec un code erreur (ici de 1) avec

Code BASH :
exit 1


Le bout de code



Code BASH :
if [ $(id -u) -ne 0 ]
then
   echo "Ce script doit être lancé en tant que root" 
   exit 1
fi