Forum Linux.général Verouiller les consoles tty* lors de la mise en veille

Posté par (page perso) . Licence CC by-sa
Tags :
4
21
oct.
2013

Bonjour!

Je me demandais s'il y avait un moyen de configurer un système d'init pour verrouiller les consoles tty sans tuer les processus en cours lors de la mise en veille de la machine ?

Ce que ça m'apporterait, ce serait une sécurité supplémentaire si j'ai oublié de fermer une console ou si j'ai une compilation en cour dessus.

Actuellement, j'utilise systemd sous Debian/Sid, mais ça m'intéresserais de savoir s'il existe un système d'init capable de le faire, même si ce n'est pas systemd.

Le problème, c'est que je ne sais pas vraiment quels termes chercher pour trouver une configuration à effectuer, parce que si l'on cherche "lock tty suspend", les moteurs de recherche trouvent souvent une fonction "tty_lock" qui n'est apparemment pas la même chose et traite plutôt de concurrence.

Merci d'avance !

  • # vlock

    Posté par . Évalué à 4.

    j'utilise vlock, sur le resume

    pm-suspend ; vlock -an

    je suppose que vlock peut être appelé depuis un hook pm-utils

    • [^] # Re: vlock

      Posté par (page perso) . Évalué à 1.

      Super! Merci beaucoup, vlock semble bien être ce dont j'avais besoin.
      Il ne me reste plus qu'à voir comment l'appliquer à la mise en veille automatiquement.

    • [^] # Re: vlock

      Posté par (page perso) . Évalué à 1.

      Hello!

      Alors, j'ai trouvé comment utiliser vlock pour faire ce que je voulais avec systemd et, maintenant, j'ai appris, que Debian avec systemd utilisais deux systèmes pour mettre en veille l'ordinateur :

      D'un côté, on a pm-utils qui est invoqué depuis le DE Gnome et de l'autre on a systemctl suspend qui est invoqué depuis systemd (donc avec les touches de raccourcis claviers et la fermeture d'un écran portable).

      Pour pouvoir créer mon hook, j'avais besoin de la commande writevt pour pouvoir écrire dans les tty depuis l'utilisateur root. Cette commande n'est disponible qu'avec le paquet console-utils , je l'ai donc installé et j'ai supprimé kbd car ils entrent en conflits (Debian/Sid).

      Ensuite, quand on lit la documentation de systemd-sleep, on voit que l'on doit mettre les hooks de systemd dans /usr/lib/systemd/system-sleep , mais en réalité, sous Debian/Sid actuellemnt, les hooks doivent être installés dans /lib/systemd/system-sleep (d'ailleurs ce dossier existe déjà).

      Enfin, les hooks de pm-utils doivent être installés dans /etc/pm-utils/sleep.d/ et doivent être nommé avec un nombre entre "00_" et "99_" pour indiquer l'ordre à pm-utils pour l'execution des scripts.

      Voilà mon fichier /lib/systemd/system-sleep/vlock.sh :

      #!/bin/sh
      
      # Action script ensure that tty are all locked just after resume
      #
      
      PATH=/sbin:/usr/sbin:/bin:/usr/bin
      
      case "${1}" in
        pre)
          case "${2}" in
            suspend|hibernate|hybrid-sleep)
              #nothing to do
              ;;
          esac
          ;;
        post)
          case "${2}" in
            suspend|hibernate|hybrid-sleep)
              for vtx in `ps -A | grep tty | grep login | perl -n -e'/tty(\d)/ && print "$1 "'`
                do
                writevt --term=/dev/tty${vtx} -T^Zvlock^M
                done
              ;;
            esac
          ;;
      esac

      Et voilà mon fichier /etc/pm/sleep.d/01_vlock.sh :

      #!/bin/sh
      
      # Action script ensure that tty are all locked just after resume
      #
      
      PATH=/sbin:/usr/sbin:/bin:/usr/bin
      
      case "${1}" in
        suspend|hibernate)
          #nothing to do
          ;;
        resume|thaw)
          for vtx in `ps -A | grep tty | grep login | perl -n -e'/tty(\d)/ && print "$1 "'`
            do
            writevt --term=/dev/tty${vtx} -T^Zvlock^M
            done
          ;;
      esac
      

      IMPORTANT :
      Le copier coller dans ce post a remplacé le caractère "Z" par ^ et Z et le caractère "M" par ^ et M, il faudra donc les remplacer à nouveau pour pouvoir les mettre dans ce fichier.

      Documentation :
      * man systemd-sleep
      * man pm-suspend

  • # ca ne repond pas completement à ta question

    Posté par . Évalué à 4.

    screen -RdS maconsole
    puis ta commande de compilation
    et Ctrl+A Ctrl+D pour se detacher du screen.

    tu peux meme te delogguer, revenir plus tard en ssh, ou depuis un terminal graphique.

    screen -list
    te donnera la liste des screen ouverts par ton utilisateur, dont le 'maconsole' créé plus tot

    screen -RdS maconsole
    pour te reconnecter au screen portant le nom 'maconsole'
    et ainsi reprendre ton tty là ou tu l'avais laissé (à savoir sur la compilation en cours ou terminée que tu avais lancée un peu plus tot)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.