Automatic login to virtual console (Italiano)

From ArchWiki
Jump to: navigation, search
Sommario help replacing me
Descrive come accedere automaticamente a una consolle virtuale.
Articoli correlati
Display Manager (Italiano)
Start X at Boot (Italiano)

Questo articolo descrive come accedere automaticamente a una “consolle virtuale” o tty alla fine del processo di boot. Questo articolo tratta solamente dell'accesso alla consolle; i metodi per avviare il server X sono descritti in Start X at Boot.

Usare inittab

Nota: Sebbene sia una derivata di mingetty, fgetty non supporta il parametro --autologin

Questo è il metodo migliore e più "pulito". Modificare le seguenti righe di /etc/inittab da:

c1:2345:respawn:/sbin/agetty -8 -s 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

in:

c1:2345:respawn:/sbin/agetty -a USERNAME -8 -s 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

per avere un autologin al boot dell'utente USERNAME sulla prima console (tty1).

Alternativamente, installare il pacchetto mingetty dai repository ufficiali. Mingetty è progettato per essere un getty minimale e per permettere login automatici. Poi bisogna cambiare /etc/inittab in:

c1:2345:respawn:/sbin/mingetty --autologin USERNAME tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

Con questo metodo non sarà possibile uscire da tty1, in quanto si accederà di nuovo all'infinito. Se si desidera che l'accesso automatico avvenga solo all'avvio, e che sia possibile uscire, è possibile modificare /etc/inittab in questo modo (nota: così non sarà possibile accedere alle altre consolle virtuali fino a dopo l'uscita):

Nota: con questo metodo non si potrà effetturare login su altre tty se non dopo l'uscita da tty1
a1:2345:wait:/sbin/mingetty --autologin USERNAME tty1 linux
c1:2345:respawn:/sbin/agetty -8 -s 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

Usare un programma di accesso in C

Come alternativa può essere scritto un programma di accesso in C:

autologin.c
#include <unistd.h>

int main(void) {
   execlp("login", "login", "-f", "USERNAME", NULL);
}

Qui la funzione in C execlp esegue il comando login -f NOMEUTENTE.

Il programma deve essere compilato e copiato in una posizione appropriata:

$ gcc -o autologin autologin.c
# cp autologin /usr/local/sbin/

Alla fine modificare etc/inittab e cambiare:

c1:2345:respawn:/sbin/agetty -8 -s 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

in:

c1:2345:respawn:/sbin/agetty -n -l /usr/local/sbin/autologin -s 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

Usare systemd

Creare un nuovo servizio tipo getty@.service e copiarlo in /etc/systemd/system/

cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Nota: /etc/systemd/system/ ha la precedenza su /usr/lib/systemd/system/

Una volta creato creare un link dal nuovo autologin@.service al "target" scelto: tty, e.g. tty1, tty2, .., tty8, etc.

ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service

Aprire autologin@.service con un editor di testo e modificare le righe ExecStart e Alias come segue:

/etc/systemd/system/autologin@.service
[Service]
...
ExecStart=-/sbin/agetty -a USERNAME %I 38400
...
[Install]
Alias=getty.target.wants/getty@tty1.service

Per questioni di sicurezza potrebbe essere consigliabile cambiare Restart=always in Restart=no.

Infine, ricaricare il demone e avviare il servizio:

systemctl daemon-reload
systemctl start getty@tty1.service