web-dev-qa-db-fra.com

Arrêter / tuer le script en cours si $ USER! = "Root"

Je travaille sur un script qui doit être exécuté en tant que root, sinon il devrait tout arrêter.

#!/bin/bash
validationRoot() {
    if [ $USER != 'root' ]
        then
            echo "You're not root! You can't use this script."

    fi
}
validationRoot;
echo "You're root!"

Je ne sais pas quoi ajouter ajouter après echo "You're not root! You can't use this script." pour arrêter l'exécution.

4
Vlad

J'aurais fait ça comme ça:

#!/bin/bash
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

Notez que id = 0 correspond à ce qui est utilisé dans le noyau pour identifier le superutilisateur (ou la racine).


edit: il sera encore mieux de rediriger vers STDERR.


Voici un one-liner :)

(( EUID )) && echo ‘You need to be root.’ && exit 1
7
Rinzwind