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


2

Mon étape par étape:

  1. Sur myserver.com, je colle la ligne "sudo -s" dans le fichier "~ / .bashrc" du répertoire de base de "mylogin".
  2. Connexion SSH à mylogin@myserver.com
  3. Après la connexion:

    root@myserver.com:~$

  4. Mais, appuyez sur Ctrl + D pour quitter

    root@myserver.com:~$ exit

    root@myserver.com:~$ exit

    ...

    root@myserver.com:~$

    5.Ne quittez pas.

Pourquoi?

S'il vous plaît, dites-moi la bonne méthode.

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.