J'écris un script shell, qui doit être exécuté avec les privilèges root.
Je peux vérifier si un utilisateur a des privilèges root avec sudo -nv || echo "no sudo"
, mais cela ne m'aide pas, si ses informations d'identification sont toujours mises en cache par sudo
, mais il n'a pas appelé mon script avec. Je n'ai donc aucun moyen de réagir à un utilisateur, sans appeler mon script avec sudo.
Je pourrais mettre sudo
devant chaque commande qui en a besoin, il suffit donc de vérifier si l'utilisateur dispose des privilèges root, mais il me semble qu'il devrait y avoir une meilleure solution.
Je recherche une commande, que je peux mettre dans mon script, qui demande à l'utilisateur les privilèges root et, si elle est fournie, exécute le reste du script, comme si l'utilisateur l'appelait avec les privilèges root en premier lieu.
Ce que je veux :
#!/bin/bash
if ! command; then # what I'm looking for
echo "This script needs root privileges."
exit 1
fi
mv /bin/cmd1 /bin/cmd2 # requires root
Modifié 2 fois
Réponse acceptée :
Testez si vous êtes root, et sinon, redémarrez avec sudo
, par exemple :
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "[email protected]"
fi