Comment puis-je CTRL ^ C hors d'une invite de mot de passe?

8

Supposons que j'ai démarré une sucommande et que je souhaite l'annuler. Control+ Cne fonctionne pas sucomme il le fait pour sudo... Je dois terminer l'invite (soit en obtenant le mot de passe assez souvent ou en le corrigeant).

Y a-t-il quelque chose que je peux taper pour supprimer une invite de mot de passe?

Point d'interrogation
la source
@DisplayName Vous ne pouvez pas contrôler-c à partir d'un su comme vous pouvez un sudo ... c'est un scénario différent.
Questionmark
la réponse est control-D.
DisplayName
@DisplayName Oui, voir la réponse de Gilles. Mon point est que cela ne devrait pas être marqué comme un doublon ...
Questionmark
C'est un doublon. La réponse pour le message que j'ai lié indique également control-D.
DisplayName

Réponses:

5

sus'exécute avec des privilèges élevés et vous ne le voyez pas répondre ^C(qui envoie un signal avec vos privilèges). Vous pourriez su à un autre obus et le tuer de l'autre obus. En outre (selon le système), il peut répondre à SIGHUP(un signal de raccrochage) si vous fermez la session de terminal où le maladroit suest en cours.

Il y a plus d'une façon qui supeut ignorer votre ^C, par exemple,

  • établir des gestionnaires de signaux ou
  • fonctionnant sous un autre terminal de contrôle.

Une lecture rapide de Debiansu semble utiliser ce dernier. Votre système peut bien sûr être différent.

Lectures complémentaires:

Thomas Dickey
la source
Si j'exécute en sutant qu'utilisateur normal et qu'il attend une entrée de mot de passe de l'utilisateur, est-ce qu'il "fonctionne avec des privilèges élevés" en ce moment?
techraf
1
Oui: vous pouvez voir par vous-même en faisant un ps -efdepuis un autre terminal. Cela se produit automatiquement car il suest configuré pour rooter .
Thomas Dickey
7

Vous pouvez CTRL-D sul'invite.
Ce raccourci signale une fin de fichier sur la console, quittant l'invite; la console s'affichera Authentication error, ce qui est prévisible.

joH1
la source
3
Control-D serait un EOF (QUIT est une chose différente, et est généralement pris ). Mais oui, l'EOF pourrait fonctionner.
Thomas Dickey
2

J'ai trouvé que le meilleur moyen de tuer sulors de la saisie d'un mot de passe incorrect est Control+ Usuivi de Control+ D. Cela devrait éviter des retards ennuyeux. Vous pouvez également effacer l'entrée avec Control+ Uet réessayer de taper le mot de passe.

Control+ Uest une commande qui efface la ligne de texte actuelle et fonctionne également dans un shell (et probablement aussi à d'autres endroits). C'est aussi bien qu'il semble fonctionner avec supour effacer le mot de passe actuellement entré.

L'utilisation de Control+ Cne semble pas fonctionner, il semble que, pour une raison quelconque, sul'ignore. Il est faux que l'utilisateur qui a démarré le processus ne puisse plus le tuer à cause de setuid - sumeurt parfaitement bien si vous le tuez avec SIGTERMou SIGQUITdepuis un autre terminal (en tant qu'utilisateur qui l'a lancé). SIGINTne fonctionne pas, donc sul'ignore probablement.

Control+ Davec une entrée de mot de passe vide semble être le seul moyen de tuer instantanément une course su- si un texte est entré, alors Control+ + Dinduira un délai de 3 secondes (sauf si vous avez réellement tapé le mot de passe correct, auquel cas. .. ça va démarrer un shell racine).

uukgoblin
la source