1 votes

Exécution d'un script avec des privilèges d'administrateur depuis un terminal client standard.

J'ai la forte impression d'essayer de réinventer la roue, mais j'ai passé un certain temps sans trouver de solution existante.

J'ai un shell script qui fonctionne déjà avec plusieurs sudos. Sa première cible était les utilisateurs admin, donc tout était ok. Mais maintenant, je me heurte à un barrage routier pour les utilisateurs standard. Sudo ne fonctionne pas, et comme je dois exécuter ce script sur n'importe quelle machine à tout moment, l'édition des sudoers n'est pas une option.

Comment puis-je réécrire ce script pour qu'il demande une fois l'utilisateur et le mot de passe admin, puis utilise ces informations d'identification pour exécuter autant de su que nécessaire ? Ce que j'essaie particulièrement de faire, c'est d'alimenter en mot de passe des su d'une ligne mais, risque de sécurité mis à part, je n'ai jamais pu utiliser quelque chose comme 'echo | su ...', comme vu sur les forums.

Merci

2voto

Douglas Points 10417

En général, vous écrivez le script comme si un administrateur allait l'exécuter et vous vérifiez si l'utilisateur a les privilèges Root pour l'exécuter. Dans tous mes script bash où le script a besoin des privilèges Root, j'ai le snipit de code suivant qui valide si l'utilisateur a les privilèges corrects :

# Validates that user is root; exits if not
echo "Checking Root Privileges"
if [ $(id -u) -ne 0 ]
  then exit 1;
  else echo "User is root";
fi

En gros, tout ce qu'il fait, c'est de vérifier le UID est 0 pour l'utilisateur actuellement connecté. Vous pouvez l'essayer en ligne de commande :

$ id -u                # My login
503

$ sudo id -u           # Root privileges
0

Exécution du script....

Il y a plusieurs façons d'exécuter le script à partir d'un compte de connexion qui n'a pas de privilèges d'administrateur :

  • les ajouter à la sudoers ou les ajouter au fichier wheel groupe
  • les ajouter à un groupe (en plus de la roue) qui a sudo privilèges
  • Exécutez le script à distance via ssh avec des identifiants d'administrateur.
  • exécuter le script en tant que plist launchd comme un démon de lancement (fonctionne en tant que racine)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X