Empêcher l'access à un téléscripteur lorsque X est tué

Supposons que je démarre manuellement un server X à partir d'une console virtuelle /dev/tty1 avec xinit ou startx , avec l' id:3:initdefault: ligne id:3:initdefault: set in /etc/inittab . Le server X est exécuté et mis sur une autre console virtuelle, normalement /dev/tty7 . Après un certain time, je décide de verrouiller l'écran avec xscreensaver --lock et quitter mon ordinateur. Pour déverrouiller l'écran, il faudrait connaître le mot de passe de mon user. Si quelqu'un décide de tuer le server X en cours d'exécution, il sera renvoyé au shell exécutant /dev/tty1 et aura à peu près access à mon ordinateur. Typiquement, le server X peut être tué avec Ctrl+Alt+Backspace ou passer à la console initiale et SIGTERM le process en cours d'exécution avec ^C

C'est sortingvial à faire – ce qui signifie qu'il doit y avoir des moyens sortingviaux pour empêcher que cela se produise. J'utilise vlock pour verrouiller ma console virtuelle /dev/tty1 pour éviter cela:

 $ xinit && vlock || vlock 

Lorsque le server X revient maintenant, gracieusement && ou pas || , la console sera verrouillée. Cela peut ne pas être la solution optimale. J'ai lu ce fil de discussion et cet article wiki, expliquant différentes solutions.

Quelles autres methods existent pour empêcher ce type d'access aux consoles virtuelles à partir des sessions X? La méthode ci-dessus est-elle suffisamment sûre? Comment prévoyez-vous cela sur votre système? Je ne vais pas utiliser un gestionnaire d'affichage.

Vous pouvez empêcher les commutateurs de console depuis Xorg en ajoutant l' Option "DontVTSwitch" "yes" à votre file de configuration Xorg.

Pour empêcher Ctrl + Alt + Backspace, vous devez append l'option DontZap à votre file de configuration Xorg. Bien sûr, cela n'empêchera pas complètement l'access à la console. Si X termine pour une raison quelconque, par exemple un problème avec un pilote, l'attaquant aura toujours access à votre console.

Vous pouvez aussi utiliser exec startx au lieu de startx qui replacea bash par startx, cela signifie que même si quelqu'un est capable d'abandonner X il ne pourra pas accéder à votre console. Vous pouvez également utiliser un gestionnaire d'affichage comme lightdm , kdm , xdm ou xdm pour ne pas avoir besoin d'une session shell existante pour démarrer la session.

J'ai l'input suivante dans mon .profile :

 # startx if on tty1 and tmux on tty2 if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/tty1 ]]; then exec xinit -- :0 -novtswitch &>/dev/null & logout elif [[ $(tty) = /dev/tty2 ]]; then tmux -f $HOME/.tmux/conf new -s secured fi 

Si je choisis de me connecter à X , j'utilise TTY1. La logout garantit que, après le démarrage de X sur TTY7, je suis déconnecté de TTY1. J'utilise xautolock et slock comme mes outils de locking d'écran.

Si X est tué, je suis renvoyé à un TTY7 vide et doit ensuite passer à l'un des six gettys actifs pour se reconnecter.