GNU/Linux >> Tutoriels Linux >  >> Linux

Inviter l'utilisateur à se connecter en tant que root lors de l'exécution d'un script shell

C'est très simple à réaliser :

#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"

Lorsque l'utilisateur actuel n'est pas root, ré-exécutez le script via sudo .

Notez que j'utilise sudo ici au lieu de su . En effet, cela vous permet de conserver les arguments. Si vous utilisez su , votre commande devrait être su -c "$0 [email protected]" ce qui altérerait vos arguments s'ils avaient des espaces ou des caractères shell spéciaux.

Si votre shell est bash, vous pouvez éviter l'appel externe à whoami :

(( EUID != 0 )) && exec sudo -- "$0" "[email protected]"

Vous pouvez également vérifier l'UID :

 if [ $(id -u) != 0 ]; then
     echo "You're not root"
     # elevate script privileges
 fi

Vous pouvez appeler le script lui-même et vérifier :

#! /bin/bash

if [ "root" != "$USER" ]; then
  su -c "$0" root
  exit
fi

...

Linux
  1. Comment exécuter la commande avant la connexion de l'utilisateur sous Linux ?

  2. Comment supprimer les privilèges root dans les scripts Shell ?

  3. La substitution d'historique échoue lorsqu'elle est implémentée dans le script shell ?

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

  5. CentOS / RHEL :Comment changer le shell de connexion de l'utilisateur

Commande Linux pour vérifier si un script shell est en cours d'exécution ou non

Exécuter un script shell dans le shell actuel avec l'autorisation sudo

Exécutez la commande shell dans jenkins en tant qu'utilisateur root ?

Exécuter Pycharm en tant que root depuis le lanceur

Vérifier le mot de passe de l'utilisateur avec un script shell

Exécuter un script shell en tant qu'utilisateur différent