Comment exécuter sudo -s après la connexion ssh

Réponses:

5

Vous pouvez stocker un drapeau dans une variable d'environnement:

if [ -z $INITIAL_SUDO ]; then
    exec sudo -s INITIAL_SUDO=1
fi

Dans ce cas, le shell initial appelé par ssh n'aura pas le INITIAL_SUDOdrapeau et il engendrera un processus sudo. Le shell appelé par sudo, quant à lui, aura une INITIAL_SUDOvariable définie et n'essaiera plus d'appeler sudo.

Notez que j'appelle exec sudo -sau lieu de sudo -s. Sinon, vous devrez appuyer deux fois sur les touches ctrl + D: d'abord pour un shell racine et ensuite pour un shell initial qui appelle sudo en premier lieu.

berekuk
la source
Notez également que si sudo -s s'interrompt pour une raison quelconque, vous êtes bloqué hors de la machine, du moins en mode interactif. Si vous vous souvenez de ce qui se passe, vous pouvez créer un fichier SSH non interactif pour y remédier.
Seth Robertson
4

La commande sudo -s exécute un nouveau shell, qui exécute votre .bashrc.

Donc, ce qui est arrivé ici, c'est que vous avez créé une boucle dans laquelle chaque nouveau shell exécute sudo -s, ce qui crée un nouveau shell. À un moment donné, la boucle a atteint la limite RLIMIT_NPROC pour le système et la boucle s'est arrêtée, laissant une énorme pile de coques imbriquées. Cette limite est trop élevée sur la plupart des systèmes (8192 ou illimitée) pour que vous puissiez les quitter à l'aide de votre clavier.


la source