Diferențe

Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.

Link către această vizualizare comparativă

Ambele părți revizuirea anterioarăVersiuni anterioare
Urmatoarea versiune
Versiuni anterioare
autologin_tty [2026/05/23 21:57] thinkrootautologin_tty [2026/05/23 22:16] (curent) thinkroot
Linia 1: Linia 1:
-====== Autologin în TTY pe Linux ====== +====== Autologin în TTY ======
- +
-~~TAGS: debian, arch, fedora, ubuntu, opensuse, tty, autologin, getty, kmscon, systemd, terminal~~+
  
 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ă. 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ă.
Linia 9: Linia 7:
 ===== Concepte de bază ===== ===== 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:+La pornire, systemd pornește un serviciu getty pe fiecare TTY activ. Getty afișează promptul de autentificare și gestionează sesiunea. Există mai multe metode de autologin, în funcție de ce gestionează TTY-ul:
  
   * **agetty** - implementarea standard, parte din pachetul ''util-linux'', prezentă pe toate distribuțiile majore   * **agetty** - implementarea standard, parte din pachetul ''util-linux'', prezentă pe toate distribuțiile majore
-  * **kmscon** - o alternativă modernă cu suport pentru fonturi scalabileUnicode complet și mai multe culori în TTY, fără a necesita un server grafic+  * **kmscon** - un emulator de terminal modern bazat pe KMS/DRM, cu suport pentru fonturi scalabile și Unicode complet 
 +  * **pam_autologin** - un modul PAM care salvează parola și o folosește în procesul normal de autentificare
  
-Un detaliu important de reținut: 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.+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 prin ''~/.bashrc''.
  
 Poți verifica oricând ce tip de terminal folosești cu: Poți verifica oricând ce tip de terminal folosești cu:
Linia 24: Linia 23:
 ===== Metoda 1: Autologin prin agetty și systemd ===== ===== Metoda 1: Autologin prin agetty și systemd =====
  
-Aceasta este metoda standard, care funcționează pe orice distribuție ce folosește systemd: Debian, Ubuntu, Fedora, Arch Linux, openSUSE și derivatele lor.+Aceasta este metoda standard, care funcționează pe orice distribuție ce folosește systemd. Configurarea se bazează pe fișiere drop-in systemd care suprascriu parametrii implicițai agetty.
  
-==== Configurare ====+==== Consolă virtuală ====
  
 Creează un fișier drop-in pentru serviciul getty de pe TTY1: Creează un fișier drop-in pentru serviciul getty de pe TTY1:
Linia 40: Linia 39:
 [Service] [Service]
 ExecStart= ExecStart=
-ExecStart=-/sbin/agetty --autologin USERUL_TAU --noreset --noclear %I $TERM+ExecStart=-/sbin/agetty --noreset --noclear --autologin USERUL_TAU - ${TERM}
 </code> </code>
  
Linia 52: Linia 51:
 </code> </code>
  
-==== Note pentru distribuții specifice ====+> **Notă:** Opțiunea ''Type=idle'' din ''getty@.service'' implicit întârzie pornirea serviciului până când toate unitățile systemd sunt pornite, pentru a evita amestecarea mesajelor de boot cu promptul de autentificare. Dacă vrei să pornești getty imediat, adaugă ''Type=simple'' în fișierul drop-in.
  
-Pe **Debian și Ubuntu**, calea către agetty poate fi ''/sbin/agetty'' sau ''/usr/sbin/agetty'' în funcție de versiune. Verifică cu:+==== Consolă serială ====
  
-<code bash> +Pentru terminale seriale (de exemplu ''ttyS0''):
-which agetty +
-</code>+
  
-Pe **Fedora și derivate (RHEL, CentOS Stream)**, metoda funcționează identic. Dacă autologinul nu funcționează, verifică jurnalul: +<code> 
- +[Service] 
-<code bash+ExecStart= 
-journalctl -u getty@tty1+ExecStart=-/usr/bin/agetty --noreset --noclear --autologin USERUL_TAU --keep-baud 115200,57600,38400,9600 ${TERM}
 </code> </code>
  
-Pe **Arch Linux**, serviciul ''getty@tty1'' este activ implicit. Metoda de mai sus funcționează din prima.+==== Consolă nspawn ====
  
-Pe **openSUSE**metoda systemd standard funcționează fără modificări suplimentare. +Pentru containere systemd-nspawnsuprascrie ''console-getty.service'':
- +
-==== Autologin pe consolă serială ==== +
- +
-Pentru terminale seriale (de exemplu ''ttyS0''), configurarea este similară dar cu parametri suplimentari pentru viteză:+
  
 <code bash> <code bash>
-sudo mkdir -p /etc/systemd/system/serial-getty@ttyS0.service.d/ +sudo mkdir -p /etc/systemd/system/console-getty.service.d/
-sudo nano /etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf+
 </code> </code>
  
Linia 82: Linia 74:
 [Service] [Service]
 ExecStart= ExecStart=
-ExecStart=-/sbin/agetty --autologin USERUL_TAU -s %I 115200,38400,9600 vt102+ExecStart=-/usr/bin/agetty --noreset --noclear --autologin USERUL_TAU --keep-baud 115200,57600,38400,9600 - ${TERM}
 </code> </code>
  
-==== Autologin fără parolă, dar cu username ====+==== Doar parola, fără username ====
  
-Dacă vrei să sari peste introducerea username-ului dar să ceri în continuare parola, folosești opțiunea ''--skip-login'':+Dacă vrei să sari peste introducerea username-ului dar să ceri în continuare parola:
  
 <code> <code>
 [Service] [Service]
 ExecStart= ExecStart=
-ExecStart=-/sbin/agetty -o '-- USERUL_TAU' --skip-login --noreset --noclear - $TERM+ExecStart=-/usr/bin/agetty -o '-- USERUL_TAU' --skip-login --noreset --noclear - ${TERM}
 </code> </code>
 +
 +==== Note pentru distribuții ====
 +
 +<tab-group>
 +  <tab title="Debian / Ubuntu">
 +
 +Calea către agetty poate varia în funcție de versiune. Verifică cu ''which agetty'' - poate fi ''/sbin/agetty'' sau ''/usr/sbin/agetty''.
 +
 +  </tab>
 +  <tab title="Arch Linux">
 +
 +Pe Arch Linux, serviciul ''getty@tty1'' este activ implicit. Metoda de mai sus funcționează din prima. Alternativ, poți folosi ''systemctl edit'' care deschide editorul direct pe fișierul de override:
 +
 +<code bash>
 +sudo systemctl edit getty@tty1.service
 +</code>
 +
 +  </tab>
 +  <tab title="Fedora / RHEL / CentOS">
 +
 +Metoda funcționează identic. Dacă autologinul nu funcționează, verifică jurnalul și eventualele refuzuri SELinux:
 +
 +<code bash>
 +journalctl -u getty@tty1 -b
 +ausearch -m avc -ts recent
 +</code>
 +
 +  </tab>
 +  <tab title="openSUSE">
 +
 +Metoda systemd standard funcționează fără modificări suplimentare.
 +
 +  </tab>
 +</tab-group>
  
 ===== Metoda 2: Autologin prin kmscon ===== ===== Metoda 2: Autologin prin kmscon =====
  
-[[https://wiki.archlinux.org/title/KMSCON|kmscon]] este un emulator de terminal pentru TTY bazat pe KMS/DRMcare 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ă.+[[https://wiki.archlinux.org/title/KMSCON|kmscon]] este un emulator de terminal bazat pe KMS/DRM care oferă fonturi scalabile cu suport TTF, Unicode complet (inclusiv caractere CJK), redare accelerată hardware și suport multi-seat. Poate funcționa ca înlocuitor pentru terminalul Linux din kernel. 
 + 
 +**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. Dacă kmscon nu poate porni din orice motiv, ''kmsconvt@.service'' pornește automat ''getty@.service'' ca rezervă.
  
 ==== Instalare ==== ==== Instalare ====
  
-Pe **Arch Linux**:+<tab-group> 
 +  <tab title="Arch Linux"> 
 <code bash> <code bash>
 sudo pacman -S kmscon sudo pacman -S kmscon
 </code> </code>
  
-Pe **Debian Trixie** (13), kmscon este disponibil din backports:+  </tab> 
 +  <tab title="Debian"> 
 + 
 +Pe Debian Trixie (13), kmscon este disponibil din backports: 
 <code bash> <code bash>
 echo "deb http://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware" | sudo tee -a /etc/apt/sources.list echo "deb http://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware" | sudo tee -a /etc/apt/sources.list
Linia 113: Linia 147:
 </code> </code>
  
-Pe **Ubuntu și Fedora**, kmscon nu este în depozitele oficiale și trebuie compilat din sursă de pe [[https://github.com/kmscon/kmscon|GitHub]].+  </tab> 
 +  <tab title="Ubuntu Fedora / openSUSE">
  
-==== Configurare kmscon pe un singur TTY ====+kmscon nu este disponibil în depozitele oficiale. Trebuie compilat din sursă de pe [[https://github.com/kmscon/kmscon|GitHub]].
  
-Pentru a rula kmscon doar pe TTY1, dezactivezi getty pe acel TTY și activezi kmsconvt:+  </tab> 
 +</tab-group> 
 + 
 +==== Activare ==== 
 + 
 +Pe TTY1 există o configurație specială implicită pentru getty. Pentru a fi conservator, poți lăsa agetty pe TTY1 și rula kmscon doar pe celelalte terminale virtuale. Sau poți rula kmscon și pe TTY1
 + 
 +Pentru a activa kmscon pe un singur TTY, dezactivezi getty pe acel TTY și activezi kmsconvt:
  
 <code bash> <code bash>
Linia 123: Linia 165:
 sudo systemctl enable kmsconvt@tty1.service sudo systemctl enable kmsconvt@tty1.service
 </code> </code>
- 
-==== Configurare kmscon pe toate TTY-urile ==== 
  
 Pentru a înlocui agetty pe toate terminalele virtuale: Pentru a înlocui agetty pe toate terminalele virtuale:
Linia 133: Linia 173:
 </code> </code>
  
-Dacă kmscon nu poate porni din orice motiv, ''kmsconvt@.service'' va porni automat ''getty@.service'' ca rezervă.+> **Sfat:** Poți reactiva ''getty@tty1.service'' și dezactiva ''kmsconvt@tty1.service'' după ce ai activat kmscon pe toate terminalele - astfel poți porni o sesiune grafică de pe TTY1 în timp ce beneficiezi de kmscon pe celelalte terminale.
  
-==== Autologin cu kmscon ====+==== Autologin prin fișierul de configurare kmscon ==== 
 + 
 +Metoda cea mai simplă este direct prin ''/etc/kmscon/kmscon.conf'': 
 + 
 +<code> 
 +# Autologin ca utilizatorul "username" 
 +login=/usr/bin/login -p -f username 
 +</code> 
 + 
 +==== Autologin prin override de serviciu ==== 
 + 
 +Alternativ, prin fișier drop-in systemd:
  
 <code bash> <code bash>
Linia 153: Linia 204:
 </code> </code>
  
-**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 niciodată.+==== Schimbarea TTY-ului ==== 
 + 
 +Combinația obișnuită ''Alt+Fn'' nu funcționează când TTY-ul curent este gestionat de kmscon. Folosește ''Ctrl+Alt+Fn'' în schimb.
  
 ===== Metoda 3: pam_autologin ===== ===== Metoda 3: pam_autologin =====
  
-[[https://wiki.archlinux.org/title/Pam_autologin|pam_autologin]] este un modul PAM care gestionează autologinul la nivel de stivă de autentificare. Spre deosebire de metoda agettyautologinul prin PAM se produce o singură dată per TTY per sesiune de boot - la delogareapare promptul normal de autentificareceea ce permite autentificarea cu un alt utilizator.+[[https://wiki.archlinux.org/title/Pam_autologin|pam_autologin]] este un modul PAM care, spre deosebire de celelalte metode, salvează parola și o folosește în procesul normal de autentificare. Aceasta înseamnă că parola poate fi folosită de ''pam_mount'' pentru a monta un director home criptatsau de GNOME Keyring pentru a debloca keyring-ul la autentificare. 
 + 
 +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. 
 + 
 +==== Instalare ====
  
-Instalare pe Arch Linux:+<tab-group> 
 +  <tab title="Arch Linux">
  
 <code bash> <code bash>
Linia 165: Linia 223:
 </code> </code>
  
-Configurare în ''/etc/pam.d/login'':+  </tab> 
 +  <tab title="Debian / Ubuntu / Fedora / openSUSE"> 
 + 
 +pam_autologin nu este disponibil în depozitele oficiale. Trebuie compilat din sursă. 
 + 
 +  </tab> 
 +</tab-group> 
 + 
 +==== Configurare ==== 
 + 
 +Editează ''/etc/pam.d/login'':
  
 <code> <code>
 #%PAM-1.0 #%PAM-1.0
-auth required pam_autologin.so +auth    required pam_autologin.so 
-auth include system-local-login +auth    include  system-local-login 
-account include system-local-login +account include  system-local-login 
-session include system-local-login+session include  system-local-login
 </code> </code>
  
-Linia ''pam_autologin.so'' trebuie să fie prima din secțiunea auth. Salvează primul login cu:+Linia ''pam_autologin.so'' trebuie să fie prima din secțiunea auth. Dacă un alt modul vine primul și are nevoie de username, îl va cere.
  
-<code bash> +Deoarece agetty nu este o aplicație PAM, nu poate trimite username-ul direct către ''login''. Trebuie configurat să folosească direct ''login'' fără să ceară username, prin fișier drop-in:
-sudo touch /etc/security/autologin.conf +
-</code> +
- +
-Deoarece agetty nu este o aplicație PAM, trebuie configurat să folosească direct ''login'' fără să ceară username:+
  
 <code> <code>
Linia 189: Linia 253:
 </code> </code>
  
-Pentru autologin la fiecare pornire (nu doar prima dată):+Salvează primul login creând fișierul de configurare: 
 + 
 +<code bash> 
 +sudo touch /etc/security/autologin.conf 
 +</code> 
 + 
 +La primul reboot vei vedea un mesaj că următorul login va fi salvat. Autentifică-te normal. La al doilea reboot autologinul va funcționa. 
 + 
 +Pentru autologin la fiecare pornirenu doar prima dată:
  
 <code> <code>
Linia 195: Linia 267:
 </code> </code>
  
-**Notă de securitate:** pam_autologin stochează credențialele obfuscatnu criptat. Cheia de deobfuscare este stocată în acelașfișier, deci protecția este minimă.+Pentru a opri autologinul, șterge fișierul de configurare cu ''shred'' (nu cu ''rm'') deoarece fișierul conține credențiale obfuscate:
  
-===== Pornirea automată a unui program după autologin =====+<code bash> 
 +sudo shred -u /etc/security/autologin.conf 
 +</code>
  
-Autologinul singur nu este suficient pe un sistem dedicat - de obicei vrei și ca un program să pornească automat. Cea mai simplă metodă este prin ''~/.bashrc'' sau ''~/.bash_profile''.+==== Notă de securitate ====
  
-Verifică mai întâi ce tip de terminal folosești după autologin:+pam_autologin stochează credențialele obfuscat cu o cheie aleatoare, dar cheia este stocată în același fișier - deci protecția este minimă. Datele pot ajunge în zona nealocată a discului dacă fișierul este șters fără ''shred''. Folosește această metodă doar pe sisteme cu disc criptat integral. 
 + 
 +===== Pornirea automată a unui program după autologin ===== 
 + 
 +Verifică mai întâi ce tip de terminal ai după autologin:
  
 <code bash> <code bash>
Linia 207: Linia 285:
 </code> </code>
  
-Exemplu pentru tmux cu neovim, pe sistem cu agetty (terminal ''tty1''):+Adaugă în ''~/.bashrc'': 
 + 
 +<tab-group> 
 +  <tab title="agetty (tty1)">
  
 <code bash> <code bash>
Linia 215: Linia 296:
 </code> </code>
  
-Dacă folosești kmscon și terminalul este ''pts/0'':+  </tab> 
 +  <tab title="kmscon (pts/0)">
  
 <code bash> <code bash>
Linia 222: Linia 304:
 fi fi
 </code> </code>
 +
 +  </tab>
 +</tab-group>
  
 Condiția ''[ -z "${TMUX}" ]'' previne pornirea recursivă a tmux în interiorul unei sesiuni tmux existente. Condiția ''[ -z "${TMUX}" ]'' previne pornirea recursivă a tmux în interiorul unei sesiuni tmux existente.
Linia 236: Linia 321:
 **Programul din .bashrc nu pornește:** **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.+Verifică ce terminal ai efectiv după autologin cu ''tty'' și asigură-te că condiția din ''.bashrc'' corespunde rezultatului.
  
 **kmscon și agetty active simultan pe același TTY:** **kmscon și agetty active simultan pe același TTY:**
Linia 248: Linia 333:
 **Autologinul pornește în buclă după delogare:** **Autologinul pornește în buclă după delogare:**
  
-Comportamentul implicit al agetty cu ''--autologin'' este să reautentifice utilizatorul la fiecare delogare. Dacă vrei ca autologinul să se producă o singură dată, folosește metoda pam_autologin fără opțiunea ''always''.+Comportamentul implicit al agetty cu ''--autologin'' este să reautentifice utilizatorul la fiecare delogare. Dacă vrei autologin o singură dată per sesiune de boot, folosește pam_autologin fără opțiunea ''always''
 + 
 +**Root nu se poate autentifica cu kmscon:** 
 + 
 +Verifică dacă ''pam_securetty'' este activ în ''/etc/pam.d/login''. Dacă da, dezactivează-l comentând linia corespunzătoare.
  
 ===== Referințe ===== ===== Referințe =====
Linia 256: Linia 345:
   * [[https://wiki.archlinux.org/title/Pam_autologin|Arch Wiki - pam_autologin]]   * [[https://wiki.archlinux.org/title/Pam_autologin|Arch Wiki - pam_autologin]]
   * [[https://github.com/kmscon/kmscon|kmscon pe GitHub]]   * [[https://github.com/kmscon/kmscon|kmscon pe GitHub]]
 +
 +{{tag>debian ubuntu arch fedora opensuse tty autologin getty kmscon systemd terminal}}