Appunti su Gentoo Linux.
Login manager

Cosa sono i login manager

Il login manager è il programma che vi permette di loggarvi nel sistema. Usando la console il login manager che viene solitamente usato è agetty oppure in alcuni casi, qingy. Tale programma viene lanciato subito dopo che il sistema ha finito la procedura di avvio. Come si sa tale procedura è gestita dal programma init il cui file di configurazione è /etc/inittab. È in quel file che dovete specificare quale login manager usare.

A parte agetty e qingy, ci sono altri login manager, per esempio xdm (antiquato), kdm (per KDE), gdm (per GNOME) e slim (semplice, carino e leggero), che però necessitano di X per funzionare. In pratica vengono lanciati da un servizio all'avvio che lancia prima il server X e poi il login manager. Quindi in questo caso il file inittab è inutile.

Nel caso dei login manager basati su X, una volta loggati si avvierà automaticamente il proprio ambiente grafico. Nel caso di agetty invece si potrà accedere solamenente alla console (l'ambiente grafico può essere lanciato poi a mano o automaticamente appena ci si logga). Qingy invece permette di loggarsi e di avviare sia una sessione in console sia una sessione grafica.

Dal punto di vista della sicurezza, far partire l'ambiente grafico da console, per esempio usando il comando startx non è una buona cosa. Infatti la combinazione di tasti CTRL-ALT-Fn è solitamente abilitata (oltre che utile) e un malintenzionato potrebbe usarla per passare dalla TTY7 (quella usata da X) a un'altra, anche quella in cui ci siamo loggati con agetty. Bloccare X con un lock non serve a nulla. Questo di certo non disabilita i tasti CTRL-ALT-Fn. Esiste poi la combinazione di tasti CTRL-ALT-BACKSPACE (disabilitata di default ma che può tornare utile). Anche in questo caso, indipendentemente se X è lockato o meno, premendo quella combinazione possiamo killare X. In questo modo il sistema ci porterà di fronte alla console da cui ci eravamo loggati.

Disabilitare quelle combinazioni di tasti sembra essere l'unica soluzione ma questo comporta che, per esempio, se si blocca X non si può recuperare la situazione passando alla console. Si perde inoltre la possibilità della multiutenza cioè la possibilità che un altro utente, trovando una sessione di X aperta e bloccata, possa passare a un altro terminale e da lì lanciare una sessione in console o in X.

Se ci si logga direttamente in X questi problemi di sicurezza non si presentano. È sufficiente lasciare disabilitata la sequenza CTRL-ALT-BACKSPACE in modo che un malintenzionato, nonostanti trovi la sessione lockata, non uccida la nostra sessione facendoci perdere i dati non salvati. Inoltre è molto comodo loggarsi direttamente in X senza passare per la console perché solitamente un utente normale usa sessioni grafiche. Far però girare continuamente X solo per il login manager può comportare un leggerissimo calo delle prestazioni e un potenziale pericolo per la sicurezza, oltretutto solitamente i login manager basati su X non gestiscono i sistemi multiutente. Passando a un'altra console, un altro utente non potrà avviare X come ha fatto il primo utente che si è loggato. Infine usando un login manager è più noioso entrare in console e killare X nel caso questo o un altro programma grafico si siano bloccati.

La soluzione a tutti questi problemi è usare Qingy e disabilitare la combinazione CTRL-ALT-BACKSPACE (che normalmente dovrebbe essere già disabilitata).

In effetti potrebbe essere utile avere la funzione CTRL-ALT-BACKSPACE. Supponiamo che X si blocchi. Un utente avanzato saprebbe come spostarsi su un'altra console e gestire la cosa ma un utente normale avrebbe come unica opzione quella di resettare il sistema. Purtroppo non credo sia possibile far sì che il lock dello schermo disabiliti temporaneamente la sequenza CTRL-ALT-BACKSPACE.

Un'ultima combinazione di tasti è ALT_SysRq_X dove X è un tasto. Riguarda il kernel e non è una sequenza del server grafico. Per disabilitarla va disabilitata nel kernel oppure la si può disabilitare a runtime con

echo 0 > /proc/sys/kernel/sysrq

Per disabilitarla nel kernel bisogna andare in Kernel hacking --> Magic SysRq key.

Qingy

Abilitate le use flag directfb, ...

emerge -pv qingy

Create la chiave (?)

qingy-keygen

Modificate il file /etc/inittab in questo modo

# TERMINALS
c1:12345:respawn:/sbin/qingy tty1 -d
c2:2345:respawn:/sbin/qingy tty2 -d
c3:2345:respawn:/sbin/qingy tty3 -d
c4:2345:respawn:/sbin/qingy tty4 -d
c5:2345:respawn:/sbin/qingy tty5 -d
c6:2345:respawn:/sbin/agetty 38400 tty6 linux

Riavviate il pc. Sulla prima console appararirà Qingy.

Le impostazioni si trovano in /etc/qingy/settings. Una cosa sicuramente da disabilitare è che gli utenti possano spegnere o resettare il pc!!!

shutdown_policy = none

L'opzione -d che ho messo serve per disabilitare la registrazione dell'ultimo utente loggato. In questo modo Qingy non vi proporrà di loggarvi con l'ultimo nome utente.

Il tema predefinito è Gentoo. I temi si trovano in /usr/share/qingy/themes. Di default c'è solo il tema di default e il tema di Gentoo. Appena ho tempo voglio fare un tema personalizzato. Servono un po' di immagini e capire come funziona il file theme. Che comunque sembra molto semplice.

Gli shortcut predefiniti da tastiera sono ... e si possono cambiare dal file di configurazione.

Vi ricordo che funziona anche il mouse.

Attualmente c'è un problema in Qingy. Se si usa Qingy in modalità framebuffer le sessioni di consolekit non sono attive. Questo il link del bug riportato dagli utenti Gentoo.

Esistono dei workaround e anche una patch che però ancora non è stata ufficialmente applicata. Per ora l'unica possibilità è quella di far funzionare Qingy senza framebuffer usando l'opzione -t:

# TERMINALS
c1:12345:respawn:/sbin/qingy tty1 -t -d
c2:2345:respawn:/sbin/qingy tty2 -t -d
c3:2345:respawn:/sbin/qingy tty3 -t -d
c4:2345:respawn:/sbin/qingy tty4 -t -d
c5:2345:respawn:/sbin/qingy tty5 -t -d
c6:2345:respawn:/sbin/agetty 38400 tty6 linux

Un altro problema di Qingy è che quando si ha un problema nel lanciare Qingy, per esempio quando sbagliate a scrivere il file inittab, viene inviato un messaggio di errore in continuazione. Il problema è che questo messaggio viene inviato a tutte le console!!! In pratica nonostante abbiamo lasciato la tty6 con agetty, da usarsi in caso di problemi, usarla è piuttosto complicato dato che lo schermo viene riempito di messaggi di errore!

Cambiare il messaggio di benvenuto

Quando usate la modalità testuale di Qingy oppure in generale un login manager come agetty (quello di default di Gentoo), vedete apparire un messaggio di benvenuto sopra lo spazio riservato all'inserimento di username e password. Qingy, agetty ecc... scrivono quel messaggio andando a guardare cosa c'è nel file /etc/issue. Pertanto se lo volete cambiare dovete modificare questo file. Guardate la man page di agetty per avere delle ulteriori informazioni su alcuni comandi speciali che possono essere usati dentro il file /etc/issue. Con Gentoo vienea anche fornito il file /etc/issue.logo molto carino.

Questo è il mio file /etc/issue


This is \n (Linux Gentoo x86_64) of the LAN \O.
This is the login terminal \l.