GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter rétroactivement un script en tant que root ?

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

Linux
  1. Comment exécuter un programme spécifique en tant que root sans invite de mot de passe ?

  2. Comment fonctionnent les composants internes de Sudo ?

  3. Comment exécuter "find -exec {} ; ?

  4. Comment faire en sorte qu'un script shell s'exécute toujours en tant que root ?

  5. Comment faire fonctionner un script Python comme un service ou un démon sous Linux

Comment exécuter un script Python en PHP

Comment exécuter des commandes Sudo sans mot de passe

Comment exécuter un script bash

Comment exécuter Dolphin en tant que root ?

Comment exécuter un alias avec Sudo sous Linux

Comment exécuter les commandes sudo sans mot de passe