Autologin în TTY

Aceasta e o versiune anterioară a paginii.


Autologin în TTY pe Linux

Autologinul în TTY permite autentificarea automată a unui utilizator la pornirea sistemului, fără a introduce parola. Este util pe sisteme cu un singur utilizator, dispozitive dedicate unui singur scop (servere fără monitor, kioscuri, dispozitive de scris), sau orice situație în care autentificarea manuală este inutilă.

Atenție: autologinul elimină protecția prin parolă la accesul fizic la mașină. Pe sisteme cu date sensibile, folosește-l doar împreună cu criptarea completă a discului.

Concepte de bază

La pornire, systemd pornește un serviciu getty pe fiecare TTY activ. Getty afișează promptul de autentificare și gestionează sesiunea. Există două implementări principale:

  • agetty - implementarea standard, parte din pachetul util-linux, prezentă pe toate distribuțiile majore
  • kmscon - o alternativă modernă cu suport pentru fonturi scalabile, Unicode complet și mai multe culori în TTY, fără a necesita un server grafic

Un detaliu important: tipul terminalului creat diferă în funcție de ce gestionează TTY-ul. agetty creează terminale de tip /dev/tty1, /dev/tty2 etc., în timp ce kmscon creează terminale de tip /dev/pts/0, /dev/pts/1 etc. Această diferență contează când configurezi programe să pornească automat după autentificare.

Poți verifica oricând ce tip de terminal folosești cu:

tty

Metoda 1: Autologin prin agetty și systemd

Aceasta este metoda standard, care funcționează pe orice distribuție ce folosește systemd.

Creează un fișier drop-in pentru serviciul getty de pe TTY1:

sudo mkdir -p /etc/systemd/system/getty@tty1.service.d/
sudo nano /etc/systemd/system/getty@tty1.service.d/autologin.conf

Conținutul fișierului:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin USERUL_TAU --noreset --noclear %I $TERM

Prima linie ExecStart= goală este obligatorie - ea resetează valoarea implicită înainte de a seta una nouă. Fără ea, systemd adaugă a doua comandă la cea existentă în loc să o înlocuiască.

Aplică modificările:

sudo systemctl daemon-reload
sudo reboot

Note pentru distribuții

Pe Debian și Ubuntu, calea către agetty poate varia în funcție de versiune. Verifică cu:

which agetty

Pe instalările minimale de Debian, interfața WiFi declarată în /etc/network/interfaces poate bloca NetworkManager, dar aceasta nu are legătură cu autologinul în TTY.

Pe Arch Linux, serviciul getty@tty1 este activ implicit. Metoda de mai sus funcționează din prima, fără configurări suplimentare.

Alternativ, poți folosi systemctl edit care deschide editorul direct pe fișierul de override:

sudo systemctl edit getty@tty1.service

Metoda systemd funcționează identic pe Fedora și derivate. Dacă autologinul nu funcționează, verifică jurnalul pentru erori:

journalctl -u getty@tty1 -b

Pe unele versiuni RHEL, SELinux poate interfera cu serviciile modificate. Verifică cu ausearch -m avc -ts recent dacă există refuzuri SELinux.

Metoda systemd standard funcționează fără modificări suplimentare. YaST oferă și o interfață grafică pentru configurarea autologinului, dar metoda prin fișier drop-in este mai flexibilă și portabilă.

Autologin pe consolă serială

Pentru terminale seriale (de exemplu ttyS0), configurarea este similară dar cu parametri suplimentari pentru viteză:

sudo mkdir -p /etc/systemd/system/serial-getty@ttyS0.service.d/
sudo nano /etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin USERUL_TAU -s %I 115200,38400,9600 vt102

Autologin fără parolă dar cu username

Dacă vrei să sari peste introducerea username-ului dar să ceri în continuare parola, folosești opțiunea –skip-login:

[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-- USERUL_TAU' --skip-login --noreset --noclear - $TERM

Metoda 2: Autologin prin kmscon

kmscon este un emulator de terminal pentru TTY bazat pe KMS/DRM, care oferă fonturi scalabile, suport complet Unicode și mai multe culori decât terminalul Linux standard. Dacă îl instalezi, el înlocuiește agetty pe TTY-urile pe care rulează.

Atenție: kmscon și agetty nu pot gestiona același TTY simultan. Dacă ai kmscon activ pe TTY1 și configurezi autologinul prin agetty tot pe TTY1, autologinul nu va funcționa.

Instalare

sudo pacman -S kmscon

Pe Debian Trixie (13), kmscon este disponibil din backports:

echo "deb http://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware" | sudo tee -a /etc/apt/sources.list
sudo apt update
sudo apt install -t trixie-backports kmscon

kmscon nu este disponibil în depozitele oficiale ale acestor distribuții. Trebuie compilat din sursă:

git clone https://github.com/kmscon/kmscon
cd kmscon
meson setup builddir/ --prefix=/usr
ninja -C builddir/
sudo ninja -C builddir/ install

Activare kmscon

Pentru a rula kmscon doar pe TTY1:

sudo systemctl disable getty@tty1.service
sudo systemctl enable kmsconvt@tty1.service

Pentru a înlocui agetty pe toate terminalele virtuale:

sudo systemctl disable getty@.service
sudo systemctl enable kmsconvt@.service

Dacă kmscon nu poate porni din orice motiv, kmsconvt@.service pornește automat getty@.service ca rezervă.

Autologin cu kmscon

sudo mkdir -p /etc/systemd/system/kmsconvt@tty1.service.d/
sudo nano /etc/systemd/system/kmsconvt@tty1.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=/usr/bin/kmscon --login -- /bin/login -f USERUL_TAU
sudo systemctl daemon-reload
sudo reboot

Metoda 3: pam_autologin

pam_autologin este un modul PAM care gestionează autologinul la nivel de stivă de autentificare. Spre deosebire de metoda agetty, autologinul prin PAM se produce o singură dată per TTY per sesiune de boot - la delogare apare promptul normal, permițând autentificarea cu un alt utilizator.

yay -S pam-autologin

pam_autologin nu este disponibil în depozitele oficiale ale acestor distribuții. Trebuie compilat din sursă de pe GitHub.

Configurare în /etc/pam.d/login:

#%PAM-1.0
auth required pam_autologin.so
auth include system-local-login
account include system-local-login
session include system-local-login

Linia pam_autologin.so trebuie să fie prima din secțiunea auth. Salvează primul login:

sudo touch /etc/security/autologin.conf

Deoarece agetty nu este o aplicație PAM, trebuie configurat să folosească direct login fără să ceară username:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --skip-login --noreset --noclear - ${TERM}

Pentru autologin la fiecare pornire, nu doar prima dată:

auth required pam_autologin.so always

Notă de securitate: pam_autologin stochează credențialele obfuscat, nu criptat. Cheia de deobfuscare este stocată în același fișier, deci protecția este minimă.

Pornirea automată a unui program după autologin

Verifică mai întâi ce tip de terminal folosești după autologin:

tty

Adaugă în ~/.bashrc sau ~/.bash_profile:

if [ -z "${TMUX}" ] && [ "$(tty)" == "/dev/tty1" ]; then
    exec tmux new-session -d 'nvim' \; attach
fi

if [ -z "${TMUX}" ] && [ "$(tty)" == "/dev/pts/0" ]; then
    exec tmux new-session -d 'nvim' \; attach
fi

Condiția [ -z „${TMUX}“ ] previne pornirea recursivă a tmux în interiorul unei sesiuni tmux existente.

Depanare

Autologinul nu funcționează după configurare:

sudo systemctl status getty@tty1.service
journalctl -u getty@tty1.service -b

Programul din .bashrc nu pornește:

Verifică ce TTY folosești efectiv după autologin cu comanda tty și asigură-te că condiția din .bashrc corespunde.

kmscon și agetty active simultan pe același TTY:

sudo systemctl list-units | grep -E 'getty|kmscon'

Autologinul pornește în buclă după delogare:

Comportamentul implicit al agetty cu –autologin este să reautentifice utilizatorul la fiecare delogare. Dacă vrei autologin o singură dată, folosește metoda pam_autologin fără opțiunea always.

Referințe