Översikt

2.1. Introduktion

GNOME displayhanterare (GDM) är en displayhanterare som implementerar alla väsentliga funktioner som krävs för att hantera anslutna och fjärrdisplayer. GDM skrevs från grunden och innehåller inte XDM eller någon X-konsortium-kod.

Notera att GDM är konfigurerbart och att många konfigurationsinställningar har en inverkan på säkerheten. Saker att tänka på är markerade i detta dokument.

Notera att vissa operativsystem konfigurerar GDM så att det beter sig annorlunda än standardvärdena som beskrivs i detta dokument. Om GDM inte verkar bete sig så som dokumenteras, kontrollera då om någon relaterad konfiguration kan vara annorlunda inställd än så som beskrivs här.

För vidare information om GDM, se till projektets webbplats http://wiki.gnome.org/Projects/GDM.

För diskussion eller frågor om GDM, vänd dig till sändlistan

. Denna lista arkiveras och är en bra resurs att kontrollera för att hitta svar på vanliga frågor. Denna lista arkiveras på http://mail.gnome.org/archives/gdm-list/ och har en sökfunktion för att hitta meddelanden med nyckelord.

Skicka in felrapporter eller förbättringsförslag till ”gdm”-kategorin i http://bugzilla.gnome.org.

2.2. Gränssnittsstabilitet

GDM 2.20 och tidigare hade stöd för stabila konfigurationsgränssnitt. Hela kodbasen skrevs dock om helt inför GDM 2.22, och är därför inte helt bakåtkompatibel med äldre versioner. Detta beror delvis på att saker fungerade annorlunda, så vissa inställningar helt enkelt inte längre var meningsfulla, delvis på att vissa inställningar aldrig hade varit vettiga och delvis på att viss funktionalitet inte hade omimplementerats ännu.

Gränssnitt som fortsättningsvis stöds på ett stabilt sätt inkluderar skripten Init, PreSession, PostSession, PostLogin och Xsession. Vissa demonkonfigurationsinställningar i filen <etc>/gdm/custom.conf har fortsatt stöd. Även ~/.dmrc och ansiktsbläddrarplatserna har fortsatt stöd.

GDM 2.20 och tidigare hade stöd för hantering av flera displayer med separata grafikkort, som används i terminalservermiljöer, inloggning i ett fönster via ett program som Xnest or Xephyr, programmet gdmsetup, XML-baserade inloggningsteman, och möjligheten att köra XDMCP-väljaren från inloggningsskärmen. Dessa funktioner lades inte till igen under 2.22-omskrivningen.

2.3. Funktionsbeskrivning

GDM är ansvarigt för att hantera displayer på systemet. Detta inkluderar autentisering av användare, starta användarsessionen och att avsluta användarsessionen. GDM är konfigurerbart och sätten på vilka det kan konfigureras beskrivs i avsnittet ”Konfigurera GDM” i detta dokument. GDM är också tillgängligt för användare med funktionshinder.

GDM erbjuder möjligheten att hantera huvudkonsolens display och displayer som startats via VT. Det är integrerat med andra program så som Fast User Switch Applet (FUSA) och gnome-screensaver för att hantera flera displayer på konsolen via gränssnittet Xserver Virtual Terminal (VT). Det kan också hantera XDMCP-displayer.

Oavsett vilken displaytyp så kommer GDM att göra följande när det hanterar displayen. Det kommer att starta en Xserver-process, sedan köra Init-skriptet som root-användaren och starta inloggningsprogrammet på displayen.

Inloggningsprogrammet körs som den oprivilegierade användaren/gruppen ”gdm”. Denna användare och grupp beskrivs i avsnittet ”Säkerhet” i detta dokument. Huvudfunktionen för inloggningsprogrammet är att erbjuda en mekanism för att välja ett konto för inloggning och att hantera dialogen mellan användaren och systemet vid autentisering av det kontot. Autentiseringsprocessen drivs av Pluggable Authentication Modules (PAM). PAM-moduler avgör vilka frågor (om några) som visas för användaren vid autentisering. I ett normalt system så kommer inloggningsprogrammet att begära ett användarnamn och lösenord för autentisering. Vissa system kan dock vara konfigurerade att använda ytterligare mekanismer så som fingeravtryck eller SmartCard-läsare. GDM kan konfigureras för stöd för dessa alternativ parallellt med inloggningstillägg och flaggan --enable-split-authentication ./configure, eller ett åt gången via systemets PAM-konfiguration.

Smartcard-tillägget kan aktiveras eller inaktivera via gsettings-nyckeln org.gnome.display-manager.extensions.smartcard.active.

På samma sätt kan fingeravtryckstillägget aktiveras eller inaktivera via gsettings-nyckeln org.gnome.display-manager.extensions.fingerprint.active.

GDM och PAM kan konfigureras att inte begära någon inmatning, vilket kommer att få GDM att automatiskt logga in och helt enkelt starta en session, vilket kan vara användbart för vissa miljöer, exempelvis enanvändarsystem eller kiosker.

Förutom autentisering låter inloggningsprogrammet användare välja vilken session som ska starta och vilket språk som ska användas. Sessioner definieras av filer som slutar med .desktop-ändelsen och mer information om dessa filer kan hittas i avsnittet ”GDM-användarsessioner och språkkonfiguration” i detta dokument. Som standard är GDM konfigurerat att visa en ansiktsbläddrare så att användaren kan välja sitt användarkonto genom att klicka på en bild istället för att mata in sitt användarnamn. GDM håller reda på användarens standardsession och språk i användarens ~/.dmrc och kommer att använda dessa standardvärden om användaren inte väljer en session eller ett språk i inloggningsgränssnittet.

Efter att ha autentiserat användaren kommer demonen att köra skriptet PostLogin som root, sedan körs skriptet PreSession som root. Efter att dessa skript körts är användarsessionen startat. När användaren avslutar sin session körs skriptet PostSession som root. Dessa skript tillhandahålls som krokar för distributioner och slutanvändare för anpassning av hur sessioner hanteras. Du kan till exempel via dessa krokar ställa in en maskiner som skapar användarens $HOME-mapp i farten och tar bort den vid utloggning. Skillnaden mellan skripten PostLogin och PreSession är att PostLogin körs innan anropet till pam_open_session vilket gör det till rätt plats att göra saker som bör köra innan användarens session initieras. Skriptet PreSession körs efter att sessionen initierats.

2.4. Inloggningsskärmspanel

GDM-inloggningsprogrammet visar en panel längst ner mot botten av skärmen som erbjuder ytterligare funktionalitet. När en användare är vald låter panelen användaren välja vilken session, vilket språk och tangentbordslayout som ska användas efter inloggning. Väljaren för tangentbordslayout ändrar också tangentbordslayouten som används när du matar in ditt lösenord. Panelen innehåller också en yta för inloggningstjänster att uppvisa statusikoner. Några exempel på statusikoner är batteriikonen för nuvarande batterianvändning och en ikon för att aktivera hjälpmedelsfunktionalitet. Inloggningsprogrammet erbjuder också knappar som låter användaren stänga ner eller starta om systemet. Det är möjligt att konfigurera GDM att inte erbjuda nedstängnings- och omstartsknapparna om så är önskvärt. GDM kan också konfigureras via PolicyKit (eller via RBAC på Oracle Solaris) för att begära att användaren har lämpligt tillstånd innan nedstängnings- eller omstartsbegäran accepteras.

Notera att tangentbordslayoutfunktionerna bara är tillgängliga på system som har libxklavier-stöd.

2.5. Hjälpmedel

GDM har stöd för ”Hjälpmedelsinloggning” för att låta användare logga in på deras skrivbordssession även om de inte enkelt kan använda skärmen, musen eller tangentbordet på det vanliga sättet. Hjälpmedelsteknologifunktioner (AT) så som ett skärmtangentbord, skärmläsare, skärmförstorare och Xserver AccessX-hjälpmedelstangentbordsstöd finns. Det är också möjligt att aktivera stor text eller högkontrastikoner och komponenter om så behövs. Se avsnittet ”Hjälpmedelskonfiguration” i dokumentet för vidare information om hur olika hjälpmedelsfunktioner kan konfigureras.

På vissa operativsystem är det nödvändigt att säkerställa att GDM-användaren är en medlem i gruppen ”audio” för AT-program för att ljudutmatning (så som text-till-tal) ska fungera.

2.6. GDM ansiktsbläddrare

Ansiktsbläddraren är gränssnittet som låter användare välja sitt användarnamn genom att klicka på en bild. Denna funktion kan aktiveras eller inaktiveras via GSettings-nyckeln org.gnome.login-screen disable-user-list och är på som standard. När den är inaktiverad, måste användare skriva in sina fullständiga användarnamn för hand. När den är aktiverad visas alla lokala användare som är tillgängliga för inloggning på systemet (alla användarkonton definierade i filen /etc/passwd som har ett giltigt skal och tillräckligt högt UID) och fjärranvändare som nyligen har loggat in. Ansiktsbläddraren i GDM 2.20 och tidigare försökte visa alla fjärranvändare vilket orsakade prestandaproblem i stora företagsinstallationer.

Ansiktsbläddraren är konfigurerad av visa användarna som loggar in oftare i toppen på listan. Detta hjälper till att se till att användare som loggar in ofta snabbt kan hitta sin inloggningsbild.

Ansiktsbläddraren har stöd för ”ifyllnadssökning” som dynamiskt flyttar ansiktsmarkeringen allt eftersom användaren skriver in motsvarande användarnamn i listan. Detta innebär att en användare med ett långt användarnamn bara behöver skriva de första tecknen i användarnamnet innan rätt objekt blir markerat i listan.

Ikonerna som GDM använder kan installeras globalt av systemadministratören eller kan placeras i användarens hemmappar. Om de installeras global ska de placeras i mappen <share>/pixmaps/faces/ och filnamnet ska vara användarens namn. Ansiktsbilderna ska vara en standardbild som GTK+ kan läsa, så som PNG eller JPEG. Ansiktsikoner som placerats i den globala ansiktsmappen måste vara läsbara för GDM-användaren.

Om det inte finns någon global ikon för användaren kommer GDM att leta i användarens $HOME-mapp efter bildfilen. GDM kommer först att leta efter användarens ansiktsbild i ~/.face. Om den inte hittas, kommer det att försöka med ~/.face.icon. Om den fortfarande inte hittas, kommer den att använda värdet som definierats för ”face/picture” i filen ~/.gnome2/gdm.

Om en användare inte har någon definierad ansiktsbild kommer GDM att använda ikonen ”stock_person” i det aktuella GTK+-temat. Om ingen sådan bild är definierad kommer det att använda en allmän ansiktsbild.

Notera att inläsning och skalning av ansiktsikoner som placerats i fjärrhemkataloger för användare kan vara en väldigt långsam process. Eftersom det inte är praktiskt att läsa in bilder över NIS eller NFS försöker inte GDM att läsa in ansiktsbilder från fjärrhemkataloger.

När bläddraren slås på kommer giltiga användarnamn på datorn att exponeras för alla. Om XDMCP är aktiverat kommer användarnamnen att exponeras för fjärranvändare. Detta begränsar självklart säkerheten något eftersom en illvillig användare inte behöver gissa giltiga användarnamn. I vissa begränsade miljöer kanske ansiktsbläddraren inte är lämplig.

2.7. XDMCP

GDM-demonen kan konfigureras att lyssna efter och hantera X Display Manage Protocol (XDMCP)-begäran från fjärrskärmar. Som standard så är XDMCP-stödet avslaget, men kan aktiveras om önskvärt. Om GDM är byggt med stöd för TCP-Wrapper så kommer demonen endast att ge tillgång till värdar angivna i GDM-tjänstavsnittet i TCP-Wrappers konfigurationsfil.

GDM innehåller flera åtgärder som gör det mer resistent mot överbelastningsattacker mot XDMCP-tjänsten. Många av protokollparametrarna, handskakningstidsgränser, etc. kan justeras. Standardkonfigurationen bör fungera ganska bra på de flesta system.

GDM lyssnar som standard efter XDMCP-begäran på den normala UDP-porten som används för XDMCP, port 177, och kommer att svara på QUERY- och BROADCAST_QUERY-begäran genom att skicka ett WILLING-paket till avsändaren.

GDM kan också konfigureras att ta INDIRECT-frågor i beaktande och presentera en värdväljare för fjärrskärmen. GDM kommer att komma ihåg användarens val och skicka vidare framtida begäran till den valda hanteraren. GDM har också stöd för ett tillägg till protokollet som kommer att få det att glömma omdirigeringen när användarens anslutning lyckas. Det finns bara stöd för detta tillägg om båda demonerna är GDM. Det är transparent och kommer att ignoreras av XDM och andra demoner som implementerar XDMCP.

Om XDMCP inte verkar fungera, säkerställ att alla maskiner är angivna i /etc/hosts.

Se vidare i ”Säkerhets”-avsnittet för information om säkerhetsaspekter när XDMCP används.

2.8. Loggning

GDM använder syslog för att logga fel och status. Det kan också logga felsökningsinformation, vilken kan vara användbar för att spåra upp problem om GDM inte fungerar korrekt. Felsökningsutskrifter kan aktiveras genom att sätta debug/Enable-nyckeln till ”true” i filen <etc>/gdm/custom.conf.

Utmatning från olika Xservrar sparas i GDM:s loggmapp, normalt <var>/log/gdm/. Xserver-meddelanden sparas i en fil associerad med displayvärdet, <display>.log.

Sessionens utskrifter dirigeras genom GDM-demonen till filen ~/$XDG_CACHE_HOME/gdm/session.log som vanligtvis expanderas till ~/.cache/gdm/session.log. Filen skrivs över vid varje inloggning så utloggning och nyinloggning för samma användare via GDM kommer att orsaka att meddelanden från föregående session går förlorade.

Notera att om GDM inte kan skapa filen av någon anledning så kommer en fil att skapas med namnet ~/$XDG_CACHE_HOME/gdm/session.log.XXXXXXXX där XXXXXXXX är några slumpmässiga tecken.

2.9. Snabb användarväxling

GDM låter flera användare vara inloggade samtidigt. Efter att en användare är inloggad kan ytterligare användare logga in via Användarväxlaren på GNOME-panelen, eller från ”Byt användare”-ikonen i Låsskärmsdialogen för GNOME skärmsläckare. Det går att växla tillbaka fram och tillbaka till den aktiva sessionen med samma mekanism. Notera att vissa distributioner kanske inte lägger till Användarväxlaren i standardpanelens konfiguration. Den kan läggas till via panelens snabbvalsmeny.

Notera att denna funktion är tillgänglig på system som har stöd för virtuella terminaler. Denna funktion kommer inte att fungera om virtuella terminaler inte är tillgängliga.