[autologin] boot, passphrase, getty, xorg...

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

[autologin] boot, passphrase, getty, xorg...

Message par Moviuro »

Plop,

J'aimerais sécuriser mon PC tout en restant ergonomique, ergo : entrer des mots de passe le moins possible, mais rester safe.
Voici typiquement ce que je souhaite faire lors d'une session de boot :
  • Appuyer sur le bouton on/off
  • Entrer le mot de passe LUKS
Et à ce point-ci exactement, je ne veux faire absolument aucune action supplémentaire et arriver sur ma session Xorg personnelle ouverte (startx ou autre).

Cette volonté s'explique simplement par le fait que si le disque dur a été débloqué, il n'a pu l'être que par moi qui connais le mot de passe LUKS. D'où le fait qu'entrer un mot de passe de sesion me semble superflu et lourd.

Ensuite, j'aimerais me protéger de personnes malicieuses qui pourraient tenter de faire crasher Xorg et éventuellement retourner en tty, malgré mon écran de verrouillage (i3lock). L'idée est donc : si Xorg meurt pour une raison quelconque, j'aimerais arriver à l'invite de login habituelle getty (getty@tty1.service).
Et je n'ai aucune idée de comment faire.

Objectif : boot -> Xorg -(kill Xorg)-> demande de login "normale" sur tty1

Mes idées pour le moment :
  • Utiliser exec startx dans mon .*_rc ou .profile : ça suppose que mon utilisateur fait un auto-login sur le tty1 lors du boot (ce que je sais faire). Cela suppose également que cet auto-login n'a lieu qu'une unique fois (ce que j'ai réussi à faire avec Restart=no dans le .service). Le problème ici, c'est que je n'arrive pas à lancer getty pour qu'il demande mon login/mot de passe si Xorg meurt une fois. J'ai droit à :
    • boot -> autologin -> Xorg -(kill Xorg)-> plus rien du tout (pas ergonomique, j'ai un underscore qui clignotte en tty1) ou
    • boot -> autologin -> Xorg -(kill Xorg)-> autologin -> Xorg (pas du tout sécurisé)
Si vous avez des solutions, je suis preneur.
++
Dernière modification par Moviuro le ven. 08 avr. 2016, 14:44, modifié 1 fois.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [autologin] boot, passphrase, getty, xorg...

Message par benjarobin »

Bonjour,
Pourquoi ne pas utiliser tout simplement un gestionnaire de connexion ultra léger et le configurer en autologin ?
Par exemple LightDM, voir peut être aussi https://wiki.archlinux.org/index.php/Li ... _autologin ?

Si Xorg plante, je suis presque persuadé que tu n'es pas reconnecté, tu te retrouves sur l'interface de LightDM
En tout cas j'ai configuré ainsi mon Kodi (XBMC), j'arrive ainsi automatiquement sur mon XBMC et si je sort de Kodi alors j'arrive sur l'interface de LightDM
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [autologin] boot, passphrase, getty, xorg...

Message par Moviuro »

C'est effectivement une option. Cependant, les DM changent et meurent (RIP KDM, SLiM...), d'où ma quête pour un truc plus stable ;) (je garde lightdm sous le coude)
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [autologin] boot, passphrase, getty, xorg...

Message par benjarobin »

Si tu veux une bonne gestion / bon fonctionnement des droits / logind / systemd, tu as 3 choix :
* Te connecter via un tty à main (ce que tu ne veux pas)
* Utiliser quelque chose de tout fait : gestionnaire de connexion (un cycle de vie de plus de 10 ans on a vu pire question stabilité)
* Se bricoler quelque chose au risque de mal faire les choses et d'avoir quelque chose de moi sécurisé, ...

Donc si tu veux vraiment partir dans cette direction, je suis sûre qu'il y a moyen de trouver un truc à base de service, mais ce n'est pas trivial à faire...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
lemust83
yeomen
Messages : 206
Inscription : ven. 11 déc. 2015, 21:20

Re: [autologin] boot, passphrase, getty, xorg...

Message par lemust83 »

Bonjour
Loubrix a publié chez Manjaro.fr une solution pour se loguer hors DM.
Je me permet de vous passer son tuto:


Un gestionnaire de connexion, ça sert à quoi ? normalement, à saisir son mot de passe, choisir son environnement (quand on en a plusieurs)...
et du coup, si on a qu'un environnement, qu'on est seul à utiliser la machine, et qu'on a activé l'autologin, on a un gestionnaire de connexion qu'on ne voit jamais, qui ne sert à rien :siffle
le mieux serait de s'en passer, ça ferait un service en moins qui tourne en tâche de fond...

ce qu'on va apprendre à faire maintenant peut être dissocié, c'est à dire que l'on va réaliser 3 actions différentes, qui toutes ensembles font démarrer l'ordinateur jusqu'au bureau sans demander le mot de passe, mais on peut n'en utiliser que certaines pour des buts particuliers.

1) Se faire un ~/.xinitrc qui peut lancer un environnement

Ce point permet d'utiliser la commande "startx" sans passer d'argument: l'environnement choisi sera lancé par l'utilisateur...

le meilleur point de départ, c'est de récupérer une copie de celui fourni avec le système:

Code : Tout sélectionner

  cp /etc/X11/xinit/xinitrc ~/.xinitrc

dans notre nouveau ~/.xinitrc (caché) on ne va pas toucher au contenu existant (certaines choses sont utiles), on va juste désactiver ce qui ne nous sert pas, et mettre la commande pour notre environnement:

Code : Tout sélectionner

    #!/bin/sh

    userresources=$HOME/.Xresources
    usermodmap=$HOME/.Xmodmap
    sysresources=/etc/X11/xinit/.Xresources
    sysmodmap=/etc/X11/xinit/.Xmodmap

    # merge in defaults and keymaps

    if [ -f $sysresources ]; then







        xrdb -merge $sysresources

    fi

    if [ -f $sysmodmap ]; then
        xmodmap $sysmodmap
    fi

    if [ -f "$userresources" ]; then







        xrdb -merge "$userresources"

    fi

    if [ -f "$usermodmap" ]; then
        xmodmap "$usermodmap"
    fi

    # start some nice programs

    if [ -d /etc/X11/xinit/xinitrc.d ] ; then
     for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
      [ -x "$f" ] && . "$f"
     done
     unset f
    fi

    # ici on désactive le lancement du gestionnaire de fenêtre de Xorg
    #twm &
    #xclock -geometry 50x50-1+1 &
    #xterm -geometry 80x50+494+51 &
    #xterm -geometry 80x20+494-0 &
    #exec xterm -geometry 80x66+0+0 -name login

    # et on lance NOTRE environnement
    exec startxfce4

il y a plusieurs écoles sur un point, certains disent qu'il doit être exécutable, d'autres non; dans le doute:

Code : Tout sélectionner

 chmod u+x ~/.xinitrc

ici, on a mis Xfce, mais on peut démarrer d'autres environnements; pour trouver la ligne de commande adéquate, il suffit de regarder le fichier *.desktop correspondant à la session qu'on veut lancer dans /usr/share/xsessions, à la ligne "Exec=".

ça c'est fait, quand on lancera "startx", ça démarrera notre environnement...

2) Faire en sorte que "startx" soit lancé automatiquement au login de l'utilisateur

si on arrive sur un terminal après le boot, on saisit son login, son mot de passe, et après il faut lancer la commande "startx" pour obtenir l'environnement graphique; ici, on fera en sorte que ce soit automatique dès que le mot de passe a été entré...
il faut éditer le fichier ~/.bash_profile (s'il n'existe pas, copier celui de /etc/skel ) et s'assurer d'avoir ceci dedans:

Code : Tout sélectionner

  [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

sauvegarder, c'est tout: "startx" sera automatique quand l'user se connectera...

3) Autologin dans le TTY1 de l'utilisateur

Ici, on fait en sorte que l'utilisateur désigné soit connecté automatiquement à la fin du boot, sans demande de mot de passe, et sur le TTY1 (celui qui fera tourner Xorg).
ça se fait en modifiant le service getty@tty1, au moyen des outils fournis avec Systemd; la modification est placée dans /etc/systemd/system/getty@tty1.service.d et donc pas modifiée par les mises à jour.

Code : Tout sélectionner

sudo systemctl edit getty@tty1.service

ceci ouvre un nouveau fichier avec votre éditeur (Nano par défaut) dans lequel il faut mettre ceci:

Code : Tout sélectionner


    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux

il faut bien sûr remplacer "username" par le vrai nom de l'utilisateur.
il peut arriver que DBus ne se lance pas assez vite, et on se retrouve avec certains daemon de la session (comme Thunar sous Xfce) qui tournent sans lui, avec pour résultat, un problème de permissions (sur les clés USB par exemple). on peut donc s'arranger pour que la session ne démarre qu'une fois DBus lancé, en mettant ceci (à la place du code précédent):

Code : Tout sélectionner

    [Unit]
    Requires=dbus.Service
    After=dbus.Service

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux

on enregistre (Ctrl-O) et on quitte (Ctrl-X).

et c'est tout...
à ce stade, on peut désactiver le gestionnaire de connexion utilisé, par exemple pour Lightdm

Code : Tout sélectionner

    sudo systemctl disable lightdm.service

ou si Plymouth est utilisé

Code : Tout sélectionner

Code : Tout sélectionner

sudo systemctl disable lightdm-plymouth.service

(au passage, je pense qu'il serait utile de supprimer Plymouth aussi pour gagner de la vitesse).
et on redémarre...

si tout est OK, on pourra désinstaller le gestionnaire de connexion; en cas de pépin, on peut réactiver en remplaçant "disable" par "enable" dans la commande.
Fin du tuto:



J'utilise sur ma tour cette façon de se connecter automatiquement depuis pas mal de temps.
Tour: Arch (Xfce) 64 Testing: 6-Core: AMD Ryzen 5 2600X type: MT MCP speed: 2152 MHz min/max: 2200/3600 MH
UEFI: American Megatrends v: 3803 date: 01/22/2018
Graphics:
Device-1: AMD Baffin [Radeon RX 460/560D / Pro
450/455/460/555/555X/560/560X]
driver: amdgpu v: kernel
Display: server: X.Org 1.20.8 driver: amdgpu,ati unloaded: modesetting
resolution: 1920x1080~60Hz
OpenGL: renderer: Radeon RX 560 Series
Manjaro en Dual (grub).
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [autologin] boot, passphrase, getty, xorg...

Message par waitnsea »

Bonjour ami,
J'ai essayé 2 fois cette technique mot-à-mot avec pour résultat d'abominables plantages...
Je ne suis peut-être pas très doué, mais je conseillerai un petit clonage de sécurité avant de tester...
Avatar de l’utilisateur
RoyalPanda
yeomen
Messages : 239
Inscription : lun. 19 mai 2014, 09:08

Re: [autologin] boot, passphrase, getty, xorg...

Message par RoyalPanda »

Bonjour,

Personnellement c'est exactement ce que j'ai, avec le disque encrypté en entier.
Je retrouve les quelques pages qui m'ont aidé et je poste ça.

Edit :

J'ai retrouvé le plus important :
http://www.pavelkogan.com/2014/05/23/lu ... ncryption/

Ça c'est pour pouvoir booter avec la partition boot encryptée. Pour la clé stocker sur le pc, personnellement je l'ai mise dans le dossier /root/.
Ensuite, autologin via : https://wiki.archlinux.org/index.php/Au ... al_console
Ensuite, auto startx via : https://wiki.archlinux.org/index.php?title=Xinitrc
Et enfin, ne pas oublier de mettre un verrouilleur d'écran si tu n'en as pas dans ton environnement graphique (xscreensaver par exemple).

Voilà,
Bon courage pour la mise en place, ça se fait bien si tu es en anglophile, sinon bah je peux essayer une traduction mais franchement je préfère la première option.
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [autologin] boot, passphrase, getty, xorg...

Message par Moviuro »

lemust83 a écrit :Bonjour
Loubrix a publié chez Manjaro.fr une solution pour se loguer hors DM. [...]
Merci @lemust83 mais tu n'as pas lu ce que je voulais faire. Ta solution ne permet pas de retrouver un login tty normal après avoir fermé Xorg, point sur lequel je pensais avoir bien insisté sur mon post.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
lemust83
yeomen
Messages : 206
Inscription : ven. 11 déc. 2015, 21:20

Re: [autologin] boot, passphrase, getty, xorg...

Message par lemust83 »

Moviuro a écrit :Ta solution ne permet pas de retrouver un login tty normal après avoir fermé Xorg
Bonjour
Je pensais que la partie "3) Autologin dans le TTY1 de l'utilisateur..." aurais pu permettre de te retrouver automatiquement sur TTY1.
Tour: Arch (Xfce) 64 Testing: 6-Core: AMD Ryzen 5 2600X type: MT MCP speed: 2152 MHz min/max: 2200/3600 MH
UEFI: American Megatrends v: 3803 date: 01/22/2018
Graphics:
Device-1: AMD Baffin [Radeon RX 460/560D / Pro
450/455/460/555/555X/560/560X]
driver: amdgpu v: kernel
Display: server: X.Org 1.20.8 driver: amdgpu,ati unloaded: modesetting
resolution: 1920x1080~60Hz
OpenGL: renderer: Radeon RX 560 Series
Manjaro en Dual (grub).
Avatar de l’utilisateur
HS-157
Hankyu
Messages : 46
Inscription : ven. 22 mai 2015, 06:52

Re: [autologin] boot, passphrase, getty, xorg...

Message par HS-157 »

Avec SystemD, tu ne pas dire lancer un service pour serveur graphique après le service d'auto-login et que si l'un des deux plante arrêter le service d'auto-login ?

Vu que SystemD fait tout, il doit pouvoir faire ça.
aminnairi
archer de cavalerie
Messages : 187
Inscription : lun. 10 août 2015, 13:50
Localisation : France

Re: [autologin] boot, passphrase, getty, xorg...

Message par aminnairi »

J'ai cru voir quelques éléments de réponses dans cette discussion très intéressante sur le stackexchange unix. Je n'ai pas eu le temps de tester mais ça peut valoir le coup.

EDIT 1 : je confirme que le exec startx fonctionne bien (après un kill de xorg, on revient sur le prompt user/psswd).

Donc, logiquement

Code : Tout sélectionner

[[ $(tty) == "/dev/tty1" ]] && exec startx
Dans le fichier .bash_profile d'un utilisateur devrait bien fonctionner. Il ne reste plus qu'à éditer le fichier tty1.service et je pense que tu arriveras à ce que tu souhaitais faire à l'origine (LUKS > autologin > exec startx > oops xorgkill > prompt login/psswd > badguy is mad).
Arch Linux x86_64 UEFI
7,3 Gio RAM
Intel® Core™ i5-4200U CPU @ 1.60GHz × 4
Intel® Haswell Mobile + NVIDIA GeForce 840M 2 Gio vRAM
KDE Plasma + SDDM
Répondre