In che modo X11 interagisce con il kernel / esegue il login


14

Come capisco per l'interazione testuale con il kernel Linux, un programma chiamato initavvia getty(o agetty) che si collega a uno dei dispositivi TTY sotto /deve richiede un nome utente. Successivamente, loginviene eseguito un programma chiamato che richiede la password dell'utente e, se corretto, quindi avvia la shell preferita dell'utente (ad esempio basho csh). A questo punto, bash interagisce con il kernel tramite il dispositivo TTY.

Come funziona questo processo di accesso per X11? X11 interagisce con il kernel su un TTY?

Risposte:


15

La shell utilizza un dispositivo TTY (se è collegato a uno) per ottenere l'input dell'utente e produrre output, e non molto altro. Il fatto che una shell sia connessa a un TTY è determinato da getty(e conservato da login); il più delle volte alla shell non importa se è connessa o meno a un TTY. La sua interazione con il kernel avviene tramite chiamate di sistema.

Un server X11 non è a conoscenza degli accessi (proprio come una shell). Il processo di accesso in X11 funziona in due modi:

  • l'utente accede al terminale e quindi avvia X (in genere utilizzando startx);
  • oppure un server X viene avviato con un "display manager" che richiede all'utente un login e una password (o qualsiasi altra informazione di autenticazione richiesta).

Il modo in cui i server X11 ottengono input e producono output è molto diverso rispetto a una shell. Sul lato input, X conosce i dispositivi che le shell non hanno, a partire dai mouse; in genere gestisce quelli direttamente con i propri driver. Anche per le tastiere, X ha i suoi driver che completano la gestione del kernel (quindi, a quanto ho capito, su Linux, ad esempio, X usa il driver TTY per leggere l'input non elaborato dalla tastiera, ma poi lo interpreta usando il proprio driver). Sul lato output, le unità X visualizzano i dispositivi direttamente, con o senza l'aiuto del kernel e senza passare attraverso un dispositivo TTY.

Server X11 su molti sistemi fanno dispositivi uso TTY però, per la sincronizzazione con il kernel: sui sistemi che supportano terminali virtuali, X ha bisogno di “riserva” del VT su cui sta girando, e la commutazione maniglia VT. Ci sono alcune altre sottigliezze lungo la strada; quindi su Linux, X modifica il TTY per disabilitare GPM (un programma che consente l'uso in modalità testo di mouse). X può anche condividere un VT ...

In alcune workstation in passato, non c'era molta sincronizzazione esplicita con il kernel; se non hai eseguito xconsole, potresti finire con i messaggi del kernel visualizzati in "modalità testo" nella parte superiore del display X11.


2

Il kernel non ha assolutamente il concetto di un login o di chi ha effettuato il login - tutto ciò che importa è che ci siano processi in esecuzione con un determinato ID utente (che non è nemmeno un affare del kernel!). Un programma di accesso, sia esso su un terminale o un display manager X11, viene eseguito come root e quindi utilizza setuid () e le chiamate correlate per impostare un potenziamento per qualsiasi UID suggerito dal resolver locale (cose NSS e libc - non di kernel) da utilizzare per l'utente che si è appena autenticato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.