BASH : Tester si un script est lancé en root
Table des matières
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
Nous allons utiliser la commande id qui nous affiche les informations de l'utilisateur :
La caractéristique de root est que son UID est de 0. On récupérera cette valeur avec l'option -u :
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
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