# Referenshandbok för GNOME Display Manager

## Terminologi och standarder använda i den här handboken

Den här handboken beskriver version 2.26.0 av GNOME:s displayhanterare. Den uppdaterades senast 2009-02-10.

Väljare - Ett program som används för att välja en fjärrvärd för att hantera en fjärrdisplay på lokal display (`gdm-host-chooser`).

FreeDesktop - Organisationen som erbjuder skrivbordsstandarder, exempelvis Desktop Entry Specification som används av GDM. http://www.freedesktop.org.

GDM - Gnome Display Manager. Används för att beskriva programvarupaketet som en helhet.

Inloggningsskärm - Det grafiska inloggningsfönstret (som erbjuds via `gnome-shell`).

PAM - Pluggable Authentication Mechanism

XDMCP - X Display Manage Protocol

Xserver - En implementation av X Window-systemet. Till exempel Xorgs Xserver som tillhandahålls av X.org-stiftelsen http://www.x.org.

Sökvägar som börjar med ett ord inom hakparenteser är relativa till installationsprefixet. D.v.s. `<share>/pixmaps/` refererar till `/usr/share/pixmaps` om GDM konfigurerades med `--prefix=/usr`.

## Översikt

### 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

    gdm-list@gnome.org

. 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.

### 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.

### 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.

### 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.

### 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.

### 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.

### 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.

### 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.

### 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.

## Säkerhet

### GDM-användaren och -gruppen

Av säkerhetsskäl rekommenderas ett särskilt konto- och grupp-id för korrekt funktion. Denna användare och grupp är normalt ”gdm” på de flesta system, men kan konfigureras till godtycklig användare eller grupp. Alla GDM GUI-program körs som denna användare så program som interagerar med användaren körs i en sandlåda. Denna användare och grupp bör ha begränsade privilegier.

Det enda speciella privilegium som ”gdm”-användaren kräver är möjligheten att läsa och skriva Xauth-filer i katalogen `<var>/run/gdm`. `<var>/run/gdm`-katalogen bör ha root:gdm-ägandeskap och 1777-rättigheter.

Du bör inte, under några omständigheter, konfigurera GDM-användaren/-gruppen till en användare som en användare lätt kan få tag i, så som användaren `nobody`. Den användare som får tillgång till en Xauth-nyckel kan snoka på och kontrollera körande GUI-program som körs i den associerade sessionen eller utföra överbelastningsattacker på den. Det är viktigt att säkerställa att systemet är konfigurerat korrekt så att bara ”gdm”-användaren har tillgång till dessa filer och att det inte är lätt att logga in på detta konto. Till exempel bör kontot vara inställt på att inte ha något lösenord eller låta icke-root-användare logga in på kontot.

GDM-inloggningsskärmens konfiguration sparas i GConf. För att låta GDM-användaren kunna skriva konfigurationen är det nödvändigt för ”gdm”-användaren att ha en skrivbar $HOME-katalog. Användare kan konfigurera standard GConf-konfigurationen som önskas för att undvika att ge ”gdm”-användaren en skrivbar $HOME-katalog. Vissa GDM-funktioner kommer dock att vara inaktiverade om det inte kan skriva tillståndsinformation till GConf-konfigurationen.

### PAM

GDM använder PAM för inloggningsautentisering. PAM står för Pluggable Authentication Module och används av de flesta program som begär autentisering på din dator. Det låter administratören konfigurera specifika autentiseringsbeteenden för olika inloggningsprogram (t.ex. ssh, login GUI, skärmsläckaren, etc.).

PAM är komplicerat och väldigt konfigurerbart och detta dokument avser inte att förklara detta i detalj. Istället avser det att ge en överblick över hur PAM-konfiguration knyts samman med GDM, hur PAM vanligtvis är konfigurerat tillsammans med GDM och kända problem. Det förväntas att en person som behöver göra PAM-konfigurering behöver läsa vidare i PAM-dokumentationen för att förstå hur man konfigurerar PAM och förstå terminologin i detta avsnitt.

PAM-konfiguration har olika, men liknande, gränssnitt på olika operativsystem, så kontrollera manualsidorna pam.d eller pam.conf för vidare detaljer. Se till att du läser PAM-dokumentationen och är bekväm med säkerhetskonsekvenserna av ändringar som du avser att göra i din konfiguration.

Notera att GDM som standard använder PAM-tjänstnamnet ”gdm” för normal inloggning och PAM-tjänstnamnet ”gdm-autologin” för automatisk inloggning. Dessa tjänster kanske inte finns definierade i din pam.d eller pam.conf konfigurationsfil. Om en post saknas, kommer GDM att använda PAM:s standardbeteende. På de flesta system borde detta fungera bra. Men den automatiska inloggningsfunktionen kanske inte fungerar om gdm-autologin-tjänsten inte är definierad.

Skriptet `PostLogin` körs före pam_open_session anropas, och skriptet `PreSession` körs efteråt. Detta låter systemadministratören lägga till godtycklig skriptning till inloggningsprocessen antingen innan eller efter att PAM initierar sessionen.

Om du önskar att få GDM att fungera med andra typer av autentiseringsmekanismer (som fingeravtryck eller SmartCard-läsare) så bör du implementera detta genom att använda en PAM-modul för den önskade autentiseringstypen snarare än att försöka modifiera GDM-koden direkt. Se vidare i PAM-dokumentation på ditt system. Hur du ska göra detta diskuteras ofta på sändlistan

    gdm-list@gnome.org

, så du kan läsa i listarkiven för vidare information.

PAM har några begränsningar angående att fungera tillsammans med flera typer av autentisering samtidigt, så som att acceptera antingen ett SmartCard eller möjligheten att mata in användarnamn och lösenord i inloggningsprogrammet. Det finns tekniker för att få detta att fungera, och det är bäst att ta reda på hur detta problem vanligtvis löses när du ställer in en sådan konfiguration.

Om automatisk inloggning inte fungerar på ett system, kontrollera om PAM-stacken ”gdm-autologin” är definierad i PAM-konfigurationen. För att detta ska fungera är det nödvändigt att använda en PAM-modul som helt enkelt inte gör någon autentisering, eller som helt enkelt returnerar PAM_SUCCESS från alla dess publika gränssnitt. Under antagandet att ditt system har en pam_allow.so PAM-modul som gör detta, skulle PAM-konfigurationen för att aktivera ”gdm-autologin” se ut så här:

           gdm-autologin auth  required    pam_unix_cred.so.1
           gdm-autologin auth  sufficient  pam_allow.so.1
           gdm-autologin account  sufficient  pam_allow.so.1
           gdm-autologin session  sufficient  pam_allow.so.1
           gdm-autologin password  sufficient  pam_allow.so.1

Ovanstående inställning kommer att orsaka att ingen lastlog-post genereras. Om en lastlog-post önskas använd följande för sessionen:

           gdm-autologin session required pam_unix_session.so.1

Om datorn används av flera människor, vilket gör automatisk inloggning olämplig, kanske du vill låta några användare logga in utan att ange lösenord. Denna funktion kan aktiveras som en konfiguration per användare i verktyget user-admin från gnome-system-tools; det uppnås genom att kontrollera om användaren är medlem i en Unix-grupp kallad ”nopasswdlogin” innan lösenordsfrågan. För att detta ska fungera måste PAM-konfigurationsfilen för ”gdm”-tjänsten inkludera en rad i stil med:

          gdm auth  sufficient  pam_succeed_if.so  user ingroup nopasswdlogin

### utmp och wtmp

GDM genererar poster i utmp- och wtmp-användarkontodatabaserna vid sessionsinloggning och -utloggning. utmp-databasen innehåller användartillträde och kontoinformation som används av kommandon så som `finger`, `last`, `login`, och `who`. wtmp-databasen innehåller historiken för användartillträde och kontoinformation för utmp-databasen. Se även manualsidorna för utmp och wtmp på ditt system för vidare information.

### Xserver-autentiseringssystem

Xserver-autentiseringsfiler sparas i en nyskapad underkatalog i `<var>/run/gdm` vid uppstart. Dessa filer används för att spara och dela ett ”lösenord” mellan X-klienter och Xservern. Detta ”lösenord” är unikt för varje sessionsinloggning, så användare från en session kan inte snoka i andra användares sessioner.

GDM har bara stöd för MIT-MAGIC-COOKIE-1 Xserver-autentiseringssystemet. Normalt tjänar man väldigt lite på andra system och inga försök har gjort för att implementera dem så här långt. Var speciellt aktsam med att använda XDMCP eftersom Xserverns autentiseringskaka överförs i klartext. Om snokande är möjligt kan en angripare enkelt snoka reda på ditt autentiseringslösenord när du logga in, oavsett vilket autentiseringsystem som används. Om snokande är möjligt och oönskad, bör du använda ssh för att tunnla en X-anslutning snarare än att använda XDMCP. Du kan tänka på XDMCP som en sorts grafiskt telnet, som har samma säkerhetsproblem. I de flesta fall bör ssh -Y föredras framför GDM:s XDMCP-funktioner.

### XDMCP-säkerhet

Även om din display skyddas av kakor kommer XEvent och därför tangentnedslag vid lösenordsinmatning fortfarande överföras i klartext. Det är trivialt att fånga in dessa.

XDMCP är primärt användbart för att köra tunna klienter som exempelvis i terminal-laboratorier. Dessa tunna klienter kommer endast att använda nätverket för att nå servern så det förefaller som den bästa säkerhetspolicyn är att ha de tunna klienterna på ett separat nätverk, som inte kan nås av resten av världen, och de kan bara ansluta till servern. Den enda punkten från vilken du behöver tillgång till utsidan är från servern. Denna typ av installation bör aldrig använda en ohanterad hubb eller annat nätverk som man kan fånga paket från.

### XDMCP tillgångskontroll

XDMCP tillgångskontroll genomförs med hjälp av TCP wrappers. Det är möjligt att kompilera GDM utan stöd för TCP wrapper, så stöd för denna funktion kanske inte finns under vissa operativsystem.

Du bör använda demonnamnet `gdm` i filerna `<etc>/hosts.allow` och `<etc>/hosts.deny`. För att till exempel neka datorer från `.evil.domain` att logga in, lägg till

    gdm: .evil.domain

till `<etc>/hosts.deny`. Du kan också behöva lägga till

    gdm: .din.domän

till din `<etc>/hosts.allow` om du normalt inte tillåter alla tjänster från alla värdar. Se manualsidan hosts.allow(5) för vidare detaljer.

### Brandväggssäkerhet

Även om GDM försöker att överlista potentiella angripare som försöker dra nytta av XDMCP är det fortfarande rekommenderat att du blockerar XDMCP-porten (normalt UDP-port 177) i din brandvägg om den inte verkligen behövs. GDM skyddar mot överbelastningsattacker men X-protokollet är ändå osäkert till sin natur och bör bara användas i kontrollerade miljöer. Dessutom tar varje fjärranslutning upp massor av resurser så det är mycket enklare att genomföra en överbelastningsattack via XDMCP än att attackera en webbserver.

Det är också vist att blockera alla Xserverns portar. Dessa är TCP-portarna 6000+ (en för varje displaynummer) i din brandvägg. Notera att GDM kommer att använda displaynummer 20 och högre för flexibla on-demand-servrar.

X är inte ett särskilt säkert protokoll om det används över internet och XDMCP är ännu osäkrare.

### PolicyKit

GDM kan konfigureras att använda PolicyKit för att låta systemadministratören kontrollera huruvida inloggningsskärmen bör erbjuda nedstängnings- och omstartsknapparna på inloggningsskärmen.

Dessa knappar kontrolleras av respektive åtgärd `org.freedesktop.consolekit.system.stop-multiple-users` och `org.freedesktop.consolekit.system.restart-multiple-users`. Policyer för dessa åtgärder kan ställas in via verktyget polkit-gnome-authorization eller kommandoradsprogrammet polkit-auth.

### RBAC (Roll-baserad tillgångskontroll)

GDM kan konfigureras att använda RBAC istället för PolicyKit. I detta fallet används RBAC-konfigurationen för att kontrollera huruvida inloggningsskärmen ska erbjuda nedstängnings- och omstartsknapparna på inloggningsskärmen.

I Oracle Solaris används till exempel ”solaris.system.shutdown”-tillståndet för att styra detta. Modifiera helt enkelt filen `/etc/user_attr` så att ”gdm”-användaren har detta tillstånd.

## Stöd för ConsoleKit

GDM inkluderar stöd för att publicera användarens inloggningsinformation via användar- och inloggningssessionsramverket känt som ConsoleKit. ConsoleKit kan hålla reda på alla användare som för närvarande är inloggade. I detta avseende kan det användas som en ersättare för utmp- eller utmpx-filerna som finns på de flesta Unix-lika operativsystemen.

När GDM ska skapa en ny inloggningsprocess för en användare kommer det att anropa en privilegierad metod i ConsoleKit för att öppna en ny session för denna användaren. Vid detta tillfälle kommer GDM också att ge ConsoleKit information om denna användarsessionen som till exempel: användar-ID:t, X11-displaynamnet som kommer att associeras med sessionen, värdnamnet från vilken sessionen härrör (användbart för XDMCP-sessioner), huruvida denna session är knuten, etc. Som entiteten som initierar användarprocessen sitter GDM i den unika positionen att känna till användarsessionen och är betrodd med dessa bitar av information. Användningen av denna privilegierade metod är begränsad av säkerhetspolicyn för D-Bus systemmeddelandebuss.

Om en användare med en existerande session har autentiserats via GDM och begära att återuppta denna existerande session kommer GDM att anropa en privilegierad metod i ConsoleKit för att låsa upp den sessionen. De precisa detaljer om vad som händer när session får denna upplåsningssignal är odefinierade och sessionspecifika. Men de flesta sessioner kommer att låsa upp en skärmsläckare som svar på detta.

När användaren väljer att logga eller om GDM eller sessionen oväntat avslutas kommer användarsessionen att avregistreras från ConsoleKit.

## Konfiguration

GDM har ett antal konfigurationsgränssnitt. Dessa inkluderar integrationspunkter för skriptning, demonkonfiguration, inloggningsskärmskonfiguration, allmänna sessionsinställningar, integration med konfiguration för gnome-settings-daemon, och sessionkonfiguration. Dessa typer av integration beskrivs i detalj nedan.

### Skriptintegrationspunkter

GDM:s skriptintegrationspunkter kan hittas i katalogen `<etc>/gdm/`:

    Xsession
    Init/
    PostLogin/
    PreSession/
    PostSession/

Skripten `Init`, `PostLogin`, `PreSession` och `PostSession` fungerar alla som beskrivs nedan.

För varje typ av skript kallas det som körs som standard ”Default” och är lagrat i en katalog som är associerad med skripttypen. Så standard `Init`-skriptet är `<etc>/gdm/Init/Default`. Ett per-skärm-skript kan tillhandahållas och om det existerar kommer det att köras istället för standardskriptet. Sådana skript lagras i samma katalog som standardskriptet och har samma namn som värdet för Xserverns DISPLAY för den skärmen. Om till exempel skriptet `<Init>/:0` existerar så kommer det att köras för DISPLAY ”:0”.

Alla dessa skript körs med root-privilegier och returnerar 0 om de körs utan problem, och en returkod som inte är 0 om något fel uppstod som bör orsaka att inloggningssessionen bör avbrytas. Notera också att GDM kommer att blockera tills skriptet avslutas, så om något av dessa skript hänger kommer detta att orsaka att inloggningsprocessen också hänger.

När Xservern för inloggnings-GUI:t har startats utan problem, men innan inloggnings-GUI:t faktiskt visas kommer GDM att köra skriptet `Init`. Detta skript är användbart för att starta program som ska köras medan inloggningsskärmen visas, eller för att göra speciell initiering om så behövs.

Efter att användaren har autentiserats utan problem kommer GDM att köra skriptet `PostLogin`. Detta görs innan någon sessionsinställning har genomförts, och före pam_open_session-anropet. Detta skript är användbart för sessionsinitiering som måste göras innan sessionen startar. Du kanske vill ställa in användarens $HOME-katalog om det behövs.

Efter att användarsessionen har initierats kommer GDM att köra skriptet `PreSession`. Detta skript är användbart för sessionsinitiering som måste göras efter att session har initierats. Det kan användas för till exempel sessionshantering eller loggning.

När en användare avslutar sin session kommer GDM att köra skriptet `PostSession`. Notera att Xservern kommer att ha avslutats vid tidpunkten då detta skript köras så den bör inte anropas.

Notera att skriptet `PostSession` kommer att köras även om skärmen misslyckas med att svara på grund av ett I/O-fel eller liknande. Därför finns det ingen garanti att X-program kommer att fungera under skriptkörningen.

Alla av de ovanstående skripten kommer att sätta miljövariabeln `$RUNNING_UNDER_GDM` till `yes`. Om skripten också delas med andra skärmhanterare kommer detta att låta dig identifiera när GDM anropar dessa skript så du kan köra viss kod när GDM används.

### Autostartskonfiguration

Katalogen `<share>/gdm/autostart/LoginWindow` innehåller filer i formatet som specificerats i ”FreeDesktop.org Desktop Application Autostart Specification”. Standardfunktioner i specifikationen kan användas för att ange att program bör omstartas automatiskt eller bara köras om ett GConf-konfigurationsvärde är inställt, etc.

`.desktop`-filer i denna katalog kommer att orsaka att det associerade programmet automatiskt startar samtidigt som inloggningsgränssnittets GUI. Som standard så levereras med filer som startar om inloggningsgränssnittet gdm-simple-greeter i sig, programmet gnome-power-manager, gnome-settings-daemon och fönsterhanteraren metacity. Dessa program behövs för att inloggningsprogrammet ska fungera. Därtill tillhandahålls desktop-filer för att starta diverse hjälpmedelsprogram om konfigurationsvärdena ställts in som anges i avsnittet Hjälpmedelskonfiguration nedan.

### Xsession-skript

Det finns också ett `Xsession`-skript i `<etc>/gdm/Xsession` som anropas mellan skripten `PreSession` och `PostSession`. Detta skript har inte per-skärm-stöd som de övriga skripten. Detta skript används för att faktiskt starta användarsessionen. Detta skript körs som användaren och kommer att köra den session som angetts av Desktop-sessionsfilen som användaren valt att starta.

### Konfiguration av demonerna

GDM-demonen konfigureras via filen `<etc>/gdm/custom.conf`. Standardvärden är lagrade i GConf i filen `gdm.schemas`. Det rekommenderas att slutanvändare modifierar filen `<etc>/gdm/custom.conf` eftersom schemafilen kan skrivas över när användaren uppdaterar sitt system till en nyare version av GDM.

Notera att äldre versioner av GDM har stöd för ytterligare konfigurationsalternativ som saknar stöd i de senaste versionerna av GDM.

Filen `<etc>/gdm/custom.conf` är skapad i `keyfile`-formatet. Nyckelord i hakparenteser definierar gruppavsnitt, strängar före ett likhetstecken (=) är nycklar och datan efter likhetstecknet representerar deras värden. Tomma rader eller rader som inleds med brädgård (#) ignoreras.

Filen `<etc>/gdm/custom.conf` har stöd för gruppavsnitten ”[daemon]”, ”[security]” och ”[xdmcp]”. Inom varje grupp finns det speciella namn/värde-par som kan anges för att modifiera hur GDM beter sig. För att till exempel aktivera tidsbegränsad inloggning och ange att användaren ska vara en användare med namnet ”du”, måste du modifiera filen så att den innehåller följande rader:

    [daemon]
    TimedLoginEnable=true
    TimedLogin=du

En fullständig lista följer över konfigurationsnycklar som stöds:

#### [chooser]

Multicast

-     Multicast=false

  Om true och IPv6 är aktiverat kommer väljaren att skicka en multicast-förfrågan till det lokala nätverket och samla in svaren från värdarna som har gått med i multicast-gruppen.

MulticastAddr

-     MulticastAddr=ff02::1

  Detta är den länklokala multicast-adressen.

#### [daemon]

TimedLoginEnable

-     TimedLoginEnable=false

  Om användaren som anges i `TimedLogin` skulle vara inloggad efter ett antal sekunder (ställs in med `TimedLoginDelay`) av inaktivitet på inloggningsskärmen. Detta är användbart för publika terminaler eller kanske till och med hemanvändning. Om användaren använder tangentbordet eller bläddrar i menyn kommer att tidsbegränsningen att återställas till `TimedLoginDelay` eller 30 sekunder, beroende på vilket som är högst. Om användaren inte matar in ett användarnamn utan bara trycker på RETUR-tangenten medan inloggningsprogrammet begär användarnamnet kommer GDM att anta att användaren omedelbart vill logga in som den tidsbegränsade användaren. Notera att inget lösenord kommer att begäras för denna användare så du bör vara aktsam, men om PAM används kan det konfigureras att kräva att ett lösenord matas in innan inloggning tillåts. Läs avsnittet ”Säkerhet->PAM” i handboken för vidare information, eller hjälp om denna funktion inte verkar fungera.

TimedLogin

-     TimedLogin=

  Detta är användaren som bör loggas in efter ett antal sekunders inaktivitet.

  Om värdet slutar med ett vertikalstreck | (rörsymbolen) kommer GDM att köra det angivna programmet och använda värdet som det returnerar på standardutmatning från programmet som användaren. Programmet körs med miljövariabeln DISPLAY satt så det är möjligt att ange användaren per skärm. Om till exempel värdet är ”/usr/bin/getloginuser|” kommer programmet ”/usr/bin/getloginuser” att köras för att hämta användarvärdet.

TimedLoginDelay

-     TimedLoginDelay=30

  Fördröjningen i sekunder innan `TimedLogin`-användaren loggas in.

AutomaticLoginEnable

-     AutomaticLoginEnable=false

  Om true, kommer användaren som angivits i `AutomaticLogin` att loggas in omedelbart. Denna funktion fungerar som tidsbegränsad inloggning med en fördröjning på 0 sekunder.

AutomaticLogin

-     AutomaticLogin=

  Detta är användaren som ska loggas in omedelbart om `AutomaticLoginEnable` är true.

  Om värdet slutar med ett vertikalstreck | (rörsymbolen) kommer GDM att köra det angivna programmet och använda värdet som det returnerar på standardutmatning från programmet som användaren. Programmet körs med miljövariabeln DISPLAY satt så det är möjligt att ange användaren per skärm. Om till exempel värdet är ”/usr/bin/getloginuser|” kommer programmet ”/usr/bin/getloginuser” att köras för att hämta användarvärdet.

User

-     User=gdm

  Användarnamnet som inloggningsskärmen och andra GUI-program körs under. Läs vidare om konfigurationsnyckeln `Group` och i avsnittet ”Security->GDM-användare och -grupp” i detta dokument för vidare information.

Group

-     Group=gdm

  Gruppnamnet som inloggningsskärmen och andra GUI-program körs under. Läs vidare om konfigurationsnyckeln `User` och i avsnittet ”Security->GDM-användare och -grupp” i detta dokument för vidare information.

#### Felsökningsalternativ

#### [debug]

Enable

-     Enable=false

  För att aktivera felsökning ställ in nyckeln debug/Enable till ”true” i filen `<etc>/gdm/custom.conf` och starta om GDM. Då kommer felsökningsutskrifter att skickas till systemet loggfil (`<var>/log/messages` eller `<var>/adm/messages` beroende på ditt operativsystem).

#### Inloggningsskärmsalternativ

#### [greeter]

IncludeAll

-     IncludeAll=true

  Om true så kommer ansiktsbläddraren att visa alla användare på den lokala maskinen. Om false så kommer ansiktsbläddraren bara att visa användare som nyligen har loggat in.

  När denna nyckel är true kommer GDM att anropa fgetpwent() för att erhålla en lista över lokala användare på systemet. Användare som har ett användar-ID lägre än 500 (eller 100 för Oracle Solaris) kommer att filtreras bort. Ansiktsbläddraren kommer också att visa användare som nyligen har loggat in på systemet (till exempel NIS/LDAP-användare). Denna lista fås genom att anropa ConsoleKit-gränssnittet `ck-history`. Det kommer också att filtrera bort användare som inte har ett giltigt skal (giltiga skal är skal som getusershell() returnerar - /sbin/nologin eller /bin/false anses vara ogiltiga skal även om getusershell() returnerar dem).

  Om false kommer GDM endast att visa användare som tidigare loggat in på systemet (lokala eller NIS/LDAP-användare) genom att anropa ConsoleKit-gränssnittet `ck-history`.

Include

-     Include=

  Ställ in en lista över användaren som alltid ska inkluderas i ansiktsbläddraren. Detta värde sätts till en lista av användare separerade med kommatecken. Som standard är värdet tomt.

Exclude

-     Exclude=bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pvm,rpm,nfsnobody,pcap

  Ställ in en lista över användare som alltid ska exkluderas från ansiktsbläddraren. Detta värdet sätts till en lista av användare separerade med kommatecken. Notera att inställningen i `custom.conf` åsidosätter standardvärdet, så om du önskar att lägga till ytterligare användare i listan måste du ställa in värdet så att det innehåller standardvärdet med de extra användarna tillagda i slutet på listan.

#### Säkerhetsalternativ

#### [security]

DisallowTCP

-     DisallowTCP=true

  Om true så kommer `-nolisten tcp` alltid att läggas till på kommandoraden när kopplade Xservrar startas, vilket förbjuder TCP-anslutning. Detta är en säkrare konfiguration om du inte använder fjärranslutningar.

#### XDCMP-stöd

#### [xdmcp]

DisplaysPerHost

-     DisplaysPerHost=1

  För att förhindra angripare från att fylla upp den väntande kön kommer GDM bara att tillåta en anslutning per fjärrdator. Om du vill erbjuda ytterligare skärmtjänster till datorer med mer än en skärm bör du öka detta värde.

  Notera att antalet kopplade SKÄRMAR som tillåts inte är begränsat. Endast fjärranslutningar via XDMCP begränsas av detta konfigurationsalternativ.

Enable

-     Enable=false

  Att sätta detta till true låter XDMCP-stödet att låta GDM hantera fjärrskärmar/X-terminaler.

  `gdm` lyssnar efter begäran på UDP-port 177. Se Port-flaggan för vidare information.

  Om GDM kompilerats för att ha stöd för det så kommer tillgång från fjärrskärmar att kontrolleras via biblioteket TCP-Wrappers. Tjänstnamnet är `gdm`

  Du bör lägga till

      gdm:.din.domän

  i din `<etc>/hosts.allow` beroende på din TCP-Wrappers-konfiguration. Se manualsidan hosts.allow för vidare detaljer.

  Notera att XDMCP inte är ett särskilt säkert protokoll och att det är en bra idé att blockera UDP-port 177 i din brandvägg om du inte verkligen behöver det.

HonorIndirect

-     HonorIndirect=true

  Aktiverar XDMCP INDIRECT-val (d.v.s. fjärrkörning av `gdmchooser`) för X-terminaler som inte tillhandahåller sin egen skärmbläddrare.

MaxPending

-     MaxPending=4

  För att undvika överbelastningsattacker har GDM en kö av väntande anslutningar med fast storlek. Bara MaxPending skärmar kan starta samtidigt.

  Notera att denna parameter inte begränsar antalet fjärrskärmar som kan hanteras. Det begränsar bara antalet skärmar som kan påbörja anslutningar samtidigt.

MaxSessions

-     MaxSessions=16

  Bestämmer maximalt antal fjärrskärmsanslutningar som kan hantera samtidigt. D.v.s. det totala antalet fjärrskärmar som kan använda din värd.

MaxWait

-     MaxWait=30

  När GDM är redo att hantera en skärm så skickas ett ACCEPT-paket till det innehållandes ett unikt sessions-ID som kommer att användas i framtida XDMCP-konversationer.

  GDM kommer sedan att placera sessions-ID:t i den väntande kön där det väntar på att skärmen ska svara med en MANAGE-begäran.

  Om inget svar tas emot inom MaxWait sekunder kommer GDM att anse att skärmen är död och ta bort den från den väntande kön vilket frigör utrymme för andra skärmar.

MaxWaitIndirect

-     MaxWaitIndirect=30

  Parametern MaxWaitIndirect avgör maximalt antal sekunder mellan tiden då en användare väljer en värd och nästföljande indirekta förfrågan då användaren är ansluten till värden. När tidsbegränsningen övertrasseras kommer informationen om den valda värden att glömmas och det indirekta utrymmet att frigöras för andra skärmar. Informationen kan komma att glömmas tidigare om det finns fler värdar än `MaxPendingIndirect` som försöker att skicka indirekta förfrågningar.

PingIntervalSeconds

-     PingIntervalSeconds=60

  Om Xservern inte svarar inom det angivna antalet sekunder kommer anslutningen att stoppas och sessionen att avslutas. När detta händer kommer demonen att dö med en ALARM-signal. Notera att GDM 2.20 och tidigare multiplicerade denna inställning med 2, så det kan vara nödvändigt att öka tidsbegränsningen om du uppgraderar från GDM 2.20 och tidigare till en nyare version.

  Notera att GDM tidigare brukade ha en konfigurationsnyckel `PingInterval` som också räknade i minuter. För de flesta användningsfall önskade man att denna inställning skulle vara kortare än en minut. Men eftersom det i de flesta fall då XDMCP används (exempelvis i terminal-laboratorier) kommer en latens på mer än 15 sekunder eller så att betyda att terminalen stängts av eller startas om och då vill man avsluta sessionen.

Port

-     Port=177

  UDP-port-numret som `gdm` bör lyssna på efter XDMCP-begäran. Ändra inte detta om du inte vet vad du gör.

Willing

-     Willing=<etc>/gdm/Xwilling

  När maskinen skickar ett WILLING-paket tillbaka efter en QUERY så skickas en sträng som anger den aktuella statusen för denna server. Standardmeddelandet är system-ID:t, men det är möjligt att skapa ett skript som visar anpassade meddelanden. Om detta skript inte existerar eller denna nyckel är tom kommer standardmeddelandet att skickas. Om detta skript lyckas och producerar utskrifter så kommer den första (och bara den första) raden av utskrifter att skickas. Det körs som mest var tredje sekund för att förhindra möjliga överbelastningsattacker genom att överbelasta maskinen med QUERY-paket.

### Enkel inloggningsskärmskonfiguration

GDM standardinloggningsskärm kallas enkel inloggningsskärm och konfigureras via GConf. Standardvärden lagras i GConf i filen `gdm-simple-greeter.schemas`. Dessa standardvärden kan åsidosättas om ”gdm”-användaren har en skrivbar $HOME-katalog att spara GConf-inställningar i. Dessa värden kan redigeras via programmen `gconftool-2` eller `gconf-editor`. Stöd finns för följande konfigurationsalternativ:

### Tangenter för inloggningsskärmskonfiguration

/apps/gdm/simple-greeter/banner_message_enable

-     false (boolean)

  Styr huruvida meddelandetexten ska visas.

/apps/gdm/simple-greeter/banner_message_text

-     NULL (sträng)

  Anger textmeddelande som ska visas på inloggningsskärmen.

/apps/gdm/simple-greeter/disable_restart_buttons

-     false (boolean)

  Styr huruvida omstartsknapparna visas i inloggningsfönstret.

/apps/gdm/simple-greeter/disable_user_list

-     false (boolean)

  Om true så kommer ansiktsbläddraren med kända användare inte att visas i inloggningsfönstret.

/apps/gdm/simple-greeter/logo_icon_name

-     computer (sträng)

  Ställ in till temats ikonnamn som ska användas för inloggningsskärmens logotyp.

/apps/gdm/simple-greeter/recent-languages

-     [] (stränglista)

  Ställ in till en lista av språk som ska visas som standard i inloggningsfönstret. Standardvärdet är ”[]”. Med standardinställningen kommer bara systemets standardspråk att visas och alternativet ”Andra…” att visa en dialogruta som visar den fullständiga listan över tillgängliga språk som användaren kan välja bland.

  Användare avses inte ändra denna inställning för hand. Istället håller GDM reda på vilka språk som väljs i denna konfigurationsnyckel och kommer att visa dem i listboxen för språk tillsammans med valet ”Andra…”. På detta sätt kommer ofta valda språk att vara enklare att välja.

/apps/gdm/simple-greeter/recent-layouts

-     [] (stränglista)

  Ställ in till en lista över tangentbordslayouter som ska visas som standard i inloggningspanelen. Standardvärdet är ”[]”. Med standardinställningen kommer endast systemets standardtangentbordslayout att visas och alternativet ”Andra…” kommer att visa en dialogruta med en fullständig lista över tillgängliga tangentbordslayouter som användaren kan välja bland.

  Användare avses inte ändra denna inställning för hand. Istället håller GDM reda på vilka tangentbordslayouter som väljs i denna konfigurationsnyckel och kommer att visa dem i listboxen för tangentbordslayout tillsammans med valet ”Andra…”. På detta sätt kommer ofta valda layouter att vara enklare att välja.

/apps/gdm/simple-greeter/wm_use_compiz

-     false (boolean)

  Styr huruvida compiz används som fönsterhanterare istället för metacity.

### Hjälpmedelskonfiguration

Detta avsnitt beskriver konfigurationsalternativ för hjälpmedel som finns i GDM.

#### GDM hjälpmedelsdialog och GConf-nycklar

GDM inloggningspanelen på inloggningsskärmen har en hjälpmedelsikon. Om du klickar på den ikonen öppnas GDM hjälpmedelsdialog. I hjälpmedelsdialogrutan finns det en lista av kryssrutor så att användaren kan aktivera eller inaktivera respektive hjälpmedel.

Kryssrutorna som motsvarar hjälpmedlen skärmtangentbord, skärmförstorare och skärmläsare påverkar tre GConf-nycklar som beskrivs i nästa avsnitt av detta dokument. Genom att aktivera eller inaktivera dessa kryssrutor så kommer motsvarande GConf-nyckel att sättas till ”true” eller ”false”. När GConf-nyckeln sätts till true så startas hjälpmedlet som är länkat till denna GConf-nyckel. När GConf-nyckeln sätts till ”false” så kommer hjälpmedlet länkat till GConf-nyckeln att avslutas. Dessa GConf-nycklar återställs inte automatiskt till standardläget efter att en användare har loggat in. Följaktligen kommer de hjälpmedel som kördes vid den senaste inloggningssessionen att automatiskt starta vid nästa GDM-inloggningssession.

De övriga kryssrutorna i GDM-hjälpmedelsdialogruta har inte motsvarande GConf-nycklar eftersom inga extra program startas för att hjälpmedelsfunktionen de erbjuder ska fungera. Dessa andra alternativ motsvarar hjälpmedelsfunktioner som erbjuds av Xservern som alltid kör under en GDM-session.

#### GConf-nycklar för hjälpmedel

GDM erbjuder följande GConf-nycklar för att kontrollera dess hjälpmedelsfunktioner:

#### Tangenter för GDM-konfiguration

/desktop/gnome/interface/accessibility

-     false (boolean)

  Kontrollerar huruvida hjälpmedelsinfrastrukturen kommer att startas samtidigt med GDM GUI. Detta behövs för att många hjälpmedelsprogram ska fungera.

/desktop/gnome/applications/at/screen_magnifier_enabled

-     false (boolean)

  Om satt, kommer hjälpmedelsverktyget länkat till denna GConf-nyckel att startas samtidigt med GDM GUI-programmet. Som standard är detta ett skärmförstorarprogram.

/desktop/gnome/applications/at/screen_keyboard_enabled

-     false (boolean)

  Om satt, kommer hjälpmedelsverktyget länkat till denna GConf-nyckel att startas samtidigt med GDM GUI-programmet. Som standard är detta ett program för skärmtangentbord.

/desktop/gnome/applications/at/screen_reader_enabled

-     false (boolean)

  Om satt, kommer hjälpmedelsverktyget länkat till denna GConf-nyckel att startas samtidigt med GDM GUI-programmet. Som standard är detta ett skärmläsarprogram.

#### Att länka GConf-nycklar till hjälpmedelsprogram

För GConf-nycklarna screen_magnifier_enabled, screen_keyboard_enabled, och screen_reader_enabled beror vilket hjälpmedelsprogram som startas på desktop-filerna i GDM:s autostartkatalog som beskrivs i avsnittet ”Autostartkonfiguration” i denna manual. Vilken desktop-fil som helst i GDM:s autostartkatalog kan länkas till dessa GConf-nycklar genom att ange den GConf-nyckeln i värdet AutostartCondition i dekstop-filen. Den exakta AutostartCondition-raden i desktop-filen skulle kunna vara en av följande:

    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_magnifier_enabled
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_reader_enabled

När en hjälpmedelsnyckel är true då kommer det program som är länkat till den nyckeln i en GDM autostart-desktop-fil att startas (om inte nyckeln Hidden är satt till true i samma desktop-fil). En ensam GConf-nyckel kan till och med starta flera hjälpmedelsverktyg om det finns flera desktop-filer med detta AutostartCondition i GDM:s autostartkatalog.

#### Exempel på hur man justerar hjälpmedelskonfigurationen

Om GNOME till exempel distribueras med GOK som standard skärmtangentbord, då skulle detta kunna ersättas med ett annat program om önskvärt. För att ersätta GOK med skärmtangentbordsprogrammet ”onboard” och dessutom aktivera hjälpmedelsverktyget ”mousetweaks” för uppehållsstöd, då behövs följande konfiguration.

Skapa en desktop-fil för onboard och en annan för mousetweaks; till exempel onboard.desktop och mousetweaks.desktop. Dessa filer måste placeras i GDM:s autostartkatalog och vara i formatet som beskrivs i avsnittet ”Autostartkonfiguration” i detta dokument.

Följande är ett exempel för filen `onboard.desktop`:

    [Desktop Entry]
    Encoding=UTF-8
    Name=Onboard Onscreen Keyboard
    Comment=Use an on-screen keyboard
    TryExec=onboard
    Exec=onboard --size 500x180 -x 20 -y 10
    Terminal=false
    Type=Application
    StartupNotify=true
    Categories=GNOME;GTK;Accessibility;
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled

Följande är ett exempel för filen `mousetweaks.desktop`:

    [Desktop Entry]
    Encoding=UTF-8
    Name=Software Mouse-Clicks
    Comment=Perform clicks by dwelling with the pointer
    TryExec=mousetweaks
    Exec=mousetweaks --enable-dwell -m window -c -x 20 -y 240
    Terminal=false
    Type=Application
    StartupNotify=true
    Categories=GNOME;GTK;Accessibility;
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled

Notera raden med AutostartCondition som länkar båda desktop-filerna till GConf-nyckeln för skärmtangentbord.

För att inaktivera GOK från att starta måste desktop-filen för GOK skärmtangentbord tas bort eller inaktiveras. Annars kommer onboard och GOK att startas samtidigt. Detta kan göras genom att ta bort gok.desktop-filen från GDM:s autostartkatalog eller genom att lägga till nyckelinställningen ”Hidden=true” i gok.desktop-filen.

Efter att dessa ändringar är gjorda kommer GOK inte längre att startas när användaren aktiverar skärmtangentbord i GDM-sessionen; istället kommer onboard och mousetweaks att startas.

### Allmänna sessionsinställningar

GDM:s inloggningsskärm använder vissa ramverk på samma sätt som din skrivbordssession gör. Därför är påverkas det av ett antal av samma GConf-inställningar. För varje inställning av dessa kommer inloggningsskärmen att använda standardvärdet om det inte är specifikt åsidosatt av a) GDM:s installerade obligatoriska policy b) systemet obligatoriska policy. GDM installerar sin egen obligatoriska policy för att låsa ner vissa inställningar av säkerhetsskäl.

### GNOME Inställningsdemon

GDM erbjuder följande insticksmoduler för gnome-settings-daemon: a11y-keyboard, background, sound, xsettings.

Dessa är ansvariga för saker som bakgrundsbilden, typsnittet och temainställningar, ljudhändelser, etc.

Insticksmoduler kan också inaktiveras via GConf. Om du till exempel vill inaktivera ljudinsticksmodulen då kan du inaktivera följande nyckel: `/apps/gdm/simple-greeter/settings-manager-plugins/sound/active`.

### GDM-sessionskonfiguration

GDM-sessioner specificeras via FreeDesktop.org Desktop Entry Specification, som kan läsas på följande URL: http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec.

Som standard kommer GDM att installera desktop-filer i katalogen `<share>/xsessions`. GDM kommer att söka i följande kataloger i angiven ordning för att hitta desktop-filer: `<etc>/X11/sessions/`, `<dmconfdir>/Sessions`, `<share>/xsessions`, och `<share>/gdm/BuiltInSessions`. Som standard är `<dmconfdir>` satt till `<etc>/dm/` om inte GDM konfigurerats att använda en annan katalog via flaggan ”--with-dmconfdir”.

En session kan inaktiveras genom att redigera desktop-filen och lägga till följande rad: `Hidden=true`.

GDM desktop-filer har stöd för ett GDM-specifikt tillägg, an nyckel med namnet ”X-GDM-BypassXsession”. Om nyckeln inte är angiven i en desktop-fil så är standardvärdet ”false”. Om denna nyckel har värdet ”true” i en desktop-fil kommer GDM att starta programmet som är angivet av ”Exec”-nyckeln omedelbart när användarsessionen startas. Det kommer inte att köra programmet via skriptet `<etc>/gdm/Xsession`, vilket är det normala beteendet. Då åsidosättning av skriptet `<etc>/gdm/Xsession` inte ställer in användarsession med de normala system- och användarinställningarna kan sessioner som startas på detta sätt vara användbara för att felsöka problem i system- eller användarskripten som förhindrar en användare från att kunna starta en session.

### GDM-användarsession och språkkonfiguration

Användarens standard session och språkval sparas i filen `~/.dmrc`. När en användare loggar in för första gången, skapas denna filen med användarens första val. Användaren kan ändras dessa standardvärden genom att helt enkelt ändra till andra värden vid inloggning. GDM kommer att komma ihåg denna ändring vid nästföljande inloggningar.

Filen `~/.dmrc` följer standard `INI`-format. Det har ett avsnitt kallat `[Desktop]` som har två nycklar: `Session` och `Language`.

Nyckeln `Session` anger basnamnet för sessionens `.desktop`-fil som användaren normalt önskar använda utan filändelsen `.desktop`. Nyckeln `Language` anger språket som användaren önskar använda som standard. Om endera av dessa nycklar saknas, kommer standardvärdet för systemet att användas. Filen ser normalt ut som följer:

    [Desktop]
    Session=gnome
    Language=cs_CZ.UTF-8

## GDM-kommandon

### GDM root-användarkommandon

GDM-paketet erbjuder följande kommandon i `sbindir` som är avsedda att köras av root-användaren:

#### `gdm` Kommandoradsflaggor

`gdm` är huvuddemonen som ställer in den grafiska inloggningsmiljön och startar nödvändiga hjälpprogram.

#### `gdm` Kommandoradsflaggor

-?, --help

- Ger en kort översikt över kommandoflaggorna.

--fatal-warnings

- Får alla varningar att avsluta GDM.

--timed-exit

- Avsluta efter 30 sekunder. Användbart för felsökning.

--version

- Skriv ut versionen av GDM-demonen.

#### `gdm-restart` Kommandoradsflaggor

`gdm-restart` stoppar och startar om GDM genom att skicka GDM-demonen en HUP-signal. Detta kommando kommer omedelbart att avsluta alla sessioner och logga ut användare som för närvarande är inloggade via GDM.

#### `gdm-safe-restart` Kommandoradsflaggor

`gdm-safe-restart` stoppar och startar om GDM genom att skicka GDM-demonen en USR1-signal. GDM kommer att startas om så snart alla användare loggat ut.

#### `gdm-stop` Kommandoradsflaggor

`gdm-stop` stoppar GDM genom att skicka GDM-demonen en TERM-signal.

## Problemlösning

Detta stycket beskriver tips för hur du får GDM att fungera. Rent allmänt så kan du, om du har problem med GDM, skicka in en felrapport eller skicka e-post till sändlistan gdm-list. Information om hur du gör detta finns i Introduktionsavsnittet i dokumentet.

Om GDM inte fungerar korrekt, är det alltid en bra idé att inkludera felsökningsinformation. För att aktivera felsökning, ställ in flaggan debug/Enable till ”true” i filen `<etc>/gdm/custom.conf` och starta om GDM. Använd sedan GDM fram tills att det slutar fungera så kommer felsökningsutskrifter att skickas till systemets loggfil (`<var>/log/messages` eller `<var>/adm/messages` beroende på ditt operativsystem). Om du delar med dig av dessa utskrifter till GDM-gemenskapen via en felsökningsrapport eller e-post, inkludera bara den GDM-relaterade felsökningsinformationen och inte hela filen då den kan vara stor. Om du inte ser några GDM-utskrifter i syslog, kan du behöver att konfigurera syslog (se manualsidan syslog för vidare detaljer).

### GDM vill inte starta

Det finns många problem som kan orsaka att GDM misslyckas att starta, men detta avsnitt kommer att beskriva ett par vanliga problem och sättet på vilket man kan ringa in ett problem med start av GDM. Vissa problem kommer att orsaka att GDM svarar med ett felmeddelande eller -dialog när det försöker att starta, men det kan vara svårt att spåra problem när GDM misslyckas i tysthet.

Först bör du säkerställa att Xservern är korrekt konfigurerad. GDM-konfigurationsfilen innehåller ett kommando i avsnittet [server-Standard] som används för att starta Xservern. Verifiera att detta kommando fungerar på ditt system. Om du kör detta kommando från konsolen bör det starta Xservern. Om det misslyckas är problem sannolikt med din Xserverkonfiguration. Se vidare i din Xserverfellogg för att få en idé om vad problemet kan vara. Problemet kan också vara att din Xserver kräver olika andra kommandoradsflaggor. Om det är fallet modifiera Xserver-kommandot i GDM-konfigurationsfilen så att den är korrekt för ditt system.

Säkerställ också att katalogen `/tmp` har lämpligt ägandeskap och rättigheter, och att maskinens filsystem inte är fullt. Dessa problem kommer att förorsaka att GDM misslyckas med att starta.

## Licens

Detta program är fri programvara. Du kan distribuera det och/eller modifiera det under villkoren i GNU General Public License, publicerad av Free Software Foundation, antingen version 2 eller (om du så vill) någon senare version.

Detta program distribueras i hopp om att det ska vara användbart, men UTAN NÅGON SOM HELST GARANTI, även utan underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public License för ytterligare information.

En kopia av GNU General Public License finns inkluderad som en bilaga till Användarguide för GNOME. Du kan även få en kopia av GNU General Public License från Free Software Foundation genom att besöka deras webbplats eller genom att skriva till

          Free Software Foundation, Inc.
          51 Franklin Street, Fifth Floor
          Boston, MA 02110-1301
          USA