44 votes

Il n'y a pas de commande 'sudo' dans Cygwin

Parce qu'il n'y a pas de commande sudo dans Cygwin, les scripts que je veux exécuter échouent avec

./install.sh: ligne N: sudo: commande introuvable

Quelle est la méthode standard pour contourner cela ? Modifier les scripts pour supprimer sudo ? Obtenir un outil similaire à sudo pour Windows ?

2voto

Gene Pavlovsky Points 473

Une légère amélioration du script faux sudo de Peon :

#!/bin/sh
# Supprime tout argument d'option.
while [[ $# -ge 0 && $1 = -* ]]; do
  shift
done

"$@"

Ce script supprime silencieusement toutes les options passées à sudo et exécute la commande (sans réellement élever les privilèges). Supprimer les options améliore quelque peu la compatibilité. Un script d'enrobage plus complet devrait en fait analyser les options de la même manière que le fait sudo.

Au lieu d'essayer de remplacer sudo par un enrobage qui utilise cygstart --action=runas "$@", utilisez simplement ce simple enrobage faux sudo et exécutez votre script d'installation lui-même (ou tout ce que vous essayez d'exécuter qui utilise sudo) avec des privilèges élevés.

0voto

user1967204 Points 1

J'ai utilisé cygwin-sudo comme un remplacement plug-and-play pour le sudo de UNIX/Linux.

Basé sur les mêmes principes mais permettant de rester dans votre fenêtre actuelle.

0voto

Coletrain Points 311

Dans les scripts qui peuvent s'exécuter sur Linux ou Windows (cygwin), vous pouvez définir un alias pour désactiver sudo dans le script lui-même :

# Alias sudo pour ne rien faire sur Windows
if ! $(type -P sudo) 
then
  shopt -s expand_aliases
  alias sudo=""
fi

0voto

PaSe Points 11

Vous pouvez exécuter sudo mais vous pouvez avoir besoin d'options. Si vous connaissez l'utilisateur/le groupe/l'environnement Active Dir, vous pouvez les fournir en tant qu'options.

Voici un alias rapide ou vous pouvez "sudo" script shell dans le PATH commun comme dans l'exemple précédent.

alias sudo='runas /noprofile /user:Administrator $@'  
alias sudo-='runas /profile /env /user:Administrator $@'

Avant de pouvoir utiliser "sudo", vous avez besoin d'un service Windows en cours d'exécution/activé appelé "seclogon".

cmd /c 'sc config seclogon start=auto'
cmd /c 'sc start seclogon'

ou utilisez powershell dans le lien suivant: Comment activer les services sur un ordinateur Windows via une ligne de commande ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X