Recherche de site Web

Comment exécuter des scripts Shell avec la commande Sudo sous Linux


sudo est un puissant outil de ligne de commande qui permet à un « utilisateur autorisé » d'exécuter une commande en tant qu'autre utilisateur (le superutilisateur par défaut), tel que défini par une politique de sécurité. Sur la plupart, sinon tous les systèmes Linux, la politique de sécurité est pilotée par le fichier /etc/sudoers.

Lire aussi : 10 configurations Sudoers utiles pour définir « sudo » sous Linux

Par conséquent, pour exécuter un script ou un programme shell en tant que root, vous devez utiliser la commande sudo. Cependant, sudo reconnaît et exécute uniquement les commandes qui existent dans les répertoires spécifiés dans le secure_path du fichier /etc/sudoers, sauf si une commande est présente dans le secure_path, vous contrecarrez une erreur telle que celle ci-dessous.

Cela se produira même si le script existe dans un répertoire de la variable d'environnement PATH, car lorsqu'un utilisateur invoque sudo, PATH est remplacé par Sudo.secure_path.

echo  $PATH
ls  -l
sudo proconport.sh 80

Dans le scénario ci-dessus, le répertoire /home/aaronkilik/bin se trouve dans la variable d'environnement PATH et nous essayons d'exécuter le script /home/aaronkilik/bin /proconport.sh (trouve le processus en écoute sur un port) avec les privilèges root.

Ensuite, nous avons rencontré l'erreur « sudo : proconport.sh : commande introuvable », car /home/aaronkilik/bin n'est pas dans le sudo secure_path comme indiqué dans la capture d'écran suivante.

Pour résoudre ce problème, nous devons ajouter le répertoire contenant nos scripts dans le sudo secure_path en utilisant la commande visudo en éditant le fichier /etc/sudoers comme suit.

sudo visudo

Attention : Cette méthode a de sérieuses implications en matière de sécurité, en particulier sur les serveurs fonctionnant sur Internet. De cette façon, nous risquons d'exposer nos systèmes à diverses attaques, car un attaquant qui parvient à accéder à un répertoire non sécurisé (sans privilèges de superutilisateur) qui a été ajouté à secure_path peut exécuter un script/programme malveillant avec la commande sudo.

Pour des raisons de sécurité, consultez l'article suivant du site Web sudo expliquant une vulnérabilité liée à secure_path : https://www.sudo.ws/sudo/alerts/secure_path.html

De préférence, nous pouvons fournir le chemin absolu d'un script lors de son exécution avec sudo :

sudo ./proconport.sh 80

C'est ça! Vous pouvez suivre la liste des articles sur la commande sudo :

  1. Comment exécuter la commande « sudo » sans saisir de mot de passe sous Linux
  2. Comment conserver la session d'expiration du mot de passe « sudo » plus longtemps sous Linux
  3. Comment réparer « Le nom d'utilisateur n'est pas dans le fichier sudoers. Cet incident sera signalé » dans Ubuntu
  4. Laissez Sudo vous insulter lorsque vous entrez un mot de passe incorrect

Si vous avez des questions ou des réflexions concernant cet article, partagez-les avec nous via le formulaire de commentaires ci-dessous.