# Справочное руководство по менеджеру дисплея GNOME

0.0
2008-09

GDM — сокращение от GNOME Display Manager, программа графического входа в систему.

Martin
K.
Petersen

    mkp@mkp.net

George
Lebl

    jirka@5z.com

Jon
McCann

    mccann@jhu.edu

Ray
Strode

    rstrode@redhat.com

Brian
Cameron

    Brian.Cameron@Oracle.COM

1998
1999
Martin K. Petersen
2001
2003
2004
George Lebl
2003
2007
2008
Red Hat, Inc.
2003
2011
Oracle и/или его филиалы. Все права защищены.
Настоящее руководство содержит описание GDM версии 2.26.0. Дата последнего обновления: 02.10.2009.
Станислав Соловей
whats_up@tut.by
2013-2019.
Станислав Соловей
Юрий Мясоедов
ymyasoedov@yandex.ru
2014.
Юрий Мясоедов
Alexey Rubtsov
rushills@gmail.com
2021
Alexey Rubtsov

## Глоссарий наименований данного руководства

Настоящее руководство содержит описание GDM версии 2.26.0. Дата последнего обновления: 02.10.2009.

Программа выбора — программа, используемая для выбора удалённого компьютера, на котором планируется управлять дисплеем при помощи локального дисплея. Запускается командой `gdm-host-chooser`.

FreeDesktop — организация, предоставляющая стандарты рабочего места, например Спецификация содержимого рабочего места.http://www.freedesktop.org.

GDM — программа графического входа в систему. Аббревиатура используется для описания всего программного пакета.

Greeter - Графическое окно входа (предоставлено `gnome-shell`).

PAM — подключаемый механизм аутентификации

XDMCP — протокол управления дисплеями X

Сервер X — реализация системы «X Window System», например сервер Xorg от X.org Foundation http://www.x.org.

Слова в уголках в путях каталогов заменяются префиксами, указанными при установке. `<share>/pixmaps/` означает `/usr/share/pixmaps`, если GDM был сконфигурирован с ключом `--prefix=/usr`.

## Содержание

### Введение

Менеджер дисплея GNOME (GDM) — это менеджер дисплея, который реализует все необходимое для управления локальными и удалёнными дисплеями. GDM был написан с нуля и не содержит кода из XDM или консорциума X.

GMD конфигурируется, и установки, влияющие на безопасность, и на которые следует обратить внимание, выделены в данном документе.

Некоторые дистрибутивы изменяют настройки GDM, поэтому их значения могут отличаться от значений по умолчанию, указанных в данном документе. Если GDM ведет себя не так, как описано в документации, пожалуйста, проверьте отличается ли содержимое конфигурационых файлов от указанного в данном документе.

Чтобы узнать больше о GDM, посетите сайт проекта: http://wiki.gnome.org/Projects/GDM.

Чтобы задать вопросы или обсудить GDM используйте список рассылки

    gdm-list@gnome.org

. Этот список рассылки имеет архив, где можно найти ответы на множество вопросов. Архив находится по адресу: http://mail.gnome.org/archives/gdm-list/ и позволяет искать сообщения по ключевым словам.

Пожалуйста, все обнаруженные ошибки или предложения направляйте в http://bugzilla.gnome.org в категорию «gdm».

### Стабильность интерфейса

В состав GDM версий 2.20 и более ранних входил устоявшийся интерфейс настройки. Однако, основной код GDM 2.22 был переписан, и стал не совсем совместимым с предыдущими версиями. Это сделано из-за того, что изменены принципы работы, и некоторые параметры потеряли смысл, некоторые никогда не использовались, а часть функций в новой версии ещё не реализована.

Интерфейсы, которые продолжают поддерживаться в неизменной форме включают в себя сценарии: Init, PreSession, PostSession, PostLogin и Xsession. Некоторые настройки демона в файле `<etc>/gdm/custom.conf` также всё ещё поддерживаются, также как `~/.dmrc` и пути расположения обозревателя изображений пользователей.

GDM версии 2.20 и более ранних позволял управлять несколькими дисплеями с различными видеокартами, что использовалось в терминалах серверов, программами входа в систему (например, Xnest и Xephyr), программой gdmsetup, темами программ приветствия, основанными на XML. Также ранние версии GDM позволяли запускать программу выбора XDMP с экрана входа в систему. Все эти возможности не реализованы в GDM версии 2.22.

### Описание функциональности

GDM отвечает за управление дисплеями в системе, что включает в себя: идентификацию пользователей, запуск и завершение сеанса пользователя. GDM конфигурируется, и способы его настройки описаны в разделе «Настройка GDM». GDM также поддерживает работу людей с ограниченными возможностями.

GDM может управлять как основным консольным дисплеем, так и дисплеями виртуальных терминалов(VT), и XDMCP-дисплеями. Большинство приложений могут работать с несколькими консольными дисплеями при помощи интерфейса виртуального терминала Xserver (Xserver VT), например: Fast User Switch Applet (FUSA) и gnome-screensaver.

Независимо от типа дисплея, GDM при управлении выполнит следующие действия: запустит процесс Xserver, затем выполнит сценарий `Init` от имени администратора системы и запустит программу приветствия на данном дисплее.

Программа greeter запускается от имени непривилегированного пользователя/группы "gdm". Этот пользователь и группа описаны в разделе "Безопасность" данного документа. Основными функциями программы greeter являются обеспечение механизма выбора учетной записи для входа в систему и управление диалогом между пользователем и системой при аутентификации этой учетной записи. Процесс аутентификации управляется подключаемыми модулями аутентификации (PAM). Модули PAM определяют, какие подсказки (если таковые имеются) будут показаны пользователю для аутентификации. В обычной системе программа greeter запрашивает имя пользователя и пароль для аутентификации. Однако некоторые системы могут быть настроены на использование дополнительных механизмов, таких как отпечатки пальцев или считыватели SmartCard. GDM можно настроить на поддержку этих альтернатив параллельно с расширениями входа в систему greeter и опцией `--enable-split-authentication` `./configure`, или по очереди с помощью системной конфигурации PAM.

Расширение для поддержки смарт-карт можно включить или выключить с помощью gsettings-ключа `org.gnome.display-manager.extensions.smartcard.active`.

Расширение для отпечатков пальцев можно включить или выключить с помощью gsettings-ключа `org.gnome.display-manager.extensions.fingerprint.active`.

GDM и PAM можно настроить таким образом, чтобы пользовательский ввод не требовался. В этом случае GDM автоматически войдёт в систему и запустит сеанс. Эта возможность может пригодиться для систем с единственным пользователем или информационных киосков.

Кроме аутентификации программа приветствия позволяет пользователю выбирать сеанс для запуска и используемый язык. Сеансы определены в файлах, имя которых заканчивается на «.desktop». Подробнее этот процесс описан в разделе «Конфигурирование». По умолчанию GDM показывает значки с изображениями пользователей, и пользователь может просто нажать на значок вместо того, чтобы вводить своё имя. GDM запоминает сеанс и язык, используемые по умолчанию, в файле `~/.dmrc`, они будут использованы при последующих входах в систему, если пользователь не выберет сеанс или язык.

После идентификации пользователя демон запустит сценарий `PostLogin`, затем `PreSession` от имени root. После выполнения этих сценариев запускается сеанс пользователя. Когда пользователь завершает текущий сеанс, выполняется сценарий `PostSession` от имени администратора системы. Эти сценарии используются как перехватчики событий, чтобы дистрибутив или пользователь могли модифицировать управление сеансами. Например, используя эти сценарии можно на лету создавать каталоги пользователей ($HOME) и уничтожать их после выхода пользователя из системы. Разница между `PostLogin` и `PreSession` в том, что первый выполняется до вызова метода pam_open_session, поэтому в `PostLogin` желательно расположить всё то, что необходимо выполнить до инициализации сеанса. Сценарий `PreSession` выполняется после инициализации сеанса пользователя.

### Панель программы приветствия

Программа приветствия GDM показывает панель с дополнительными действиями, присоединённую к нижней части экрана. Если пользователь выбран, то на панели можно указать сеанс, язык и раскладку клавиатуры, которые будут использованы после входа в систему. Можно также сменить раскладку при вводе пароля. На панели также есть место для значков дополнительных сервисов входа в систему, например: индикатор зарядки батарей, значок, позволяющий включить специальные возможности. Программа приветствия показывает кнопки завершения работы и перезагрузки системы, которые можно убрать при помощи настроек GDM. С помощью PolicyKit (или с помощью RBAC в Oracle Solaris) можно настроить GDM таким образом, что перед выключением или перезагрузки системы будет необходима идентификация пользователя.

Заметьте, что возможность смены раскладки доступна только в тех системах, в которых имеется поддержка libxklavier.

### Специальные возможности

GDM поддерживает специальные возможности ввода при входе в систему, позволяющие пользователям регистрироваться в системе, если затруднено использование дисплея, мыши или клавиатуры обычными способами. В этом случае доступны вспомогательные технологии ввода, такие как: экранная клавиатура, чтение текста на экране, экранная лупа и специальная доступная клавиатура для X сервера, а также, при необходимости, контрастные темы, значки и крупноразмерные шрифты. Подробнее см. раздел «Настройка специальных возможностей», в котором описываются способы настройки специальных возможностей.

В некоторых дистрибутивах учётную запись GDM необходимо сделать членом группы «audio», чтобы программы поддержки специальных возможностей, например программы чтения с экрана, могли нормально функционировать.

### Обозреватель изображений пользователей GDM

Face Browser - это интерфейс, который позволяет пользователям выбирать свое имя пользователя, нажимая на изображение. Эта функция может быть включена или отключена с помощью ключа org.gnome.login-screen disable-user-list GSettings и по умолчанию включена. Если функция отключена, пользователи должны набирать свое полное имя пользователя вручную. При включении отображаются все локальные пользователи, доступные для входа в систему (все учетные записи пользователей, определенные в файле /etc/passwd, имеющие действительный shell и достаточно высокий UID) и удаленные пользователи, которые недавно вошли в систему. Лицевой браузер в GDM 2.20 и более ранних версиях пытался отобразить всех удаленных пользователей, что вызывало проблемы с производительностью в больших корпоративных развертываниях.

Обозреватель упорядочивает пользователей по частоте входа в систему по убыванию. Благодаря чему пользователи, чаще всего регистрирующиеся в системе, могут быстро отыскать своё изображение.

Обозреватель изображений поддерживает поиск по первым символам, который динамически меняет положение изображение пользователя в списке по мере того, как пользователь вводит первые символы имени. Поэтому пользователю с длинным именем достаточно ввести несколько первых символов, и нужное имя автоматически будет выбрано из списка.

Изображения пользователей, которые использует GDM, могут быть установлены глобально системным администратором или располагаться в домашних каталогах пользователей. Глобально они находятся в каталоге `<share>/pixmaps/faces/` и имя файла с изображением должно совпадать с именем пользователя. Изображение должно храниться в формате, который может быть прочтён библиотекой GTK+, например PNG или JPEG. Учётная запись GDM должна иметь права чтения этих файлов.

Общее изображение для всех пользователей установить нельзя. В домашнем каталоге пользователей GDM проверит наличие файла изображения в `~/.face`, затем в `~/.face.icon` и после проверит значение «face/picture=» в файле `~/.gnome2/gdm`. Будет использовано первое найденное изображение в указанном порядке.

Если в каталоге пользователя не найдено изображение, GDM использует указанную в теме GTK+ в параметре «stock_person». Если такого параметра не найдено, то будет использовано стандартное изображение.

Так как загрузка и масштабирование изображений расположенных на удалённых компьютерах может занять продолжительное время, то GDM не загружает изображения пользователей из удалённых домашних каталогов.

Когда обозреватель включён, то он показывает всех пользователей, которым разрешен вход в систему, а если включен XDMCP, то имена всех пользователей доступны удалённо. Что ухудшает безопасность в том случае, если недоброжелатель не должен догадываться о корректных именах пользователей. Поэтому в некоторых системах с высоким уровнем безопасности использование обозревателя изображений пользователей недопустимо.

### XDMCP

GDM можно настроить так, что он будет отслеживать и управлять запросами по протоколу управления дисплеями X (XDMCP) от удалённых машин. По умолчанию эта возможность отключена. Если GDM собран с поддержкой TCP Wrapper, то демон разрешит доступ тем машинам, которые перечислены в секции «GDM service» в конфигурационном файле TCP Wrapper.

GDM содержит ряд внутренних механизмов, которые делают его более устойчивым к DoS атакам на XDMCP сервис. Множество параметров протокола, например таймер установки соединения, могут быть точно подогнаны. Значения по умолчанию должны достаточно хорошо подходить большинству систем.

GDM прослушивает UDP порт 177, используемый по умолчанию для XDMCP протокола. И отвечает на запросы QUERY и BROADCAST_QUERY, посылая пакет WILLING источнику.

GDM может быть настроен на обработку запросов INDIRECT и быть диспетчером удалённых менеджеров дисплеев. В этом случае GDM будет запоминать выбор пользователя и перенаправлять дальнейшие запросы указанному менеджеру (например, GDM) на другой машине. GDM также поддерживает расширения протокола, благодаря которым GDM не будет запоминать машину перенаправления после успешного соединения пользователя. Это возможно только если на обоих машинах используется GDM. Другие менеджеры будут игнорировать такую возможность.

Если XDMCP не работает, убедитесь, что все удалённые машины перечислены в файле `/etc/hosts`.

Для получения информации по вопросам безопасности использования XDMCP обратитесь к разделу «Безопасность».

### Журналирование

GDM использует утилиту syslog для журналирования ошибок и состояний своей работы. Кроме того, GDM может записывать в журнал отладочную информацию, которая может пригодиться при решении проблем, например, если GDM работает некорректно. Эта возможность включается с помощью ключа debug/Enable (значение должно быть выставлено в true) в файле `<etc>/gdm/custom.conf`.

Вывод сообщений от большинства X серверов помещается в каталоге журналов GDM, по умолчанию `<var>/log/gdm/`. Любое сообщение X сервера сохраняется в файле с именем по номеру дисплея: `<display>.log`.

Вывод сообщений сеанса пропускается через службу GDM и записывается в файл `~/$XDG_CACHE_HOME/gdm/session.log` (обычно это файл `~/.cache/gdm/session.log`). Файл перезаписывается после каждого регистрации пользователя в системе, поэтому выход и последующий вход в систему одного и того же пользователя приводит к удалению сообщений, записанных во время предыдущего сеанса.

Если GDM не сможет создать этот файл по какой-либо причине, то будет создан файл `~/$XDG_CACHE_HOME/gdm/session.log.XXXXXXXX`, где `XXXXXXXX` — набор случайных символов.

### Быстрое переключение пользователей

GDM допускает одновременный вход нескольких пользователей. После входа одного пользователя, другой может войти с помощью переключателя пользователей на панели GNOME, или с помощью кнопки «Сменить пользователя» в диалоговом окне блокировки экрана. Активный сеанс можно переключить обратно с помощью того-же механизма. Некоторые дистрибутивы не добавляют кнопку переключения пользователей на панель, в этом случае она может быть добавлена через контекстное меню панели.

Эта возможность доступна в системах, которые имеют поддержку виртуальных терминалов. Она не будет работать, если в системе не поддерживаются виртуальные терминалы.

## Безопасность

### Учётные записи пользователя и группы GDM

В целях безопасности, рекомендуется использовать выделенную учётную запись пользователя и группы. В большинстве систем это — «gdm». Но GDM можно настроить на использование любой другой учётной записи. Все графические программы GDM запускаются от имени этой учётной записи и взаимодействие происходит в рамках её прав. Поэтому желательно ограничить права пользователя и группы gdm.

Единственная специальная привелегия учётной записи «gdm», необходимая для работы — это возможность чтения и записи файлов Xauth в каталог `<var>/run/gdm`, который должен иметь владельца root:gdm и права доступа 1777.

Ни при каких обстоятельствах не следеут указывать GDM такую учётную запись, к которой пользователь может легко получить доступ, например `nobody`. Любой пользователь, который получит доступ к ключу Xauth, сможет проследить или перехватить контроль над соответствующими работающими графическими приложениями или организовать DoS атаку на текущий сеанс. Важно убедиться, что система настроена таким образом, что только учётная запись «gdm» имеет доступ к этим файлам, и что войти в систему под этой учётной записью невозможно. Например, такая учётная запись не должна иметь пароля или позволять обычным пользователям входить под этой учётной записью.

Конфигурация программы приветствия GDM хранится в GConf. Чтобы разрешить GDM записывать конфигурацию, необходимо учётной записи «gdm» дать права записи в свой домашний каталог $HOME. Пользователи могут самостоятельно изменять конфигурацию по умолчанию в GConf, чтобы избежать необходимости обечпечивать учётной записи «gdm» права записи в домашний каталог $HOME. При этом некоторые возможности GDM могут быть недоступны, если у него нет возможности записывать информацию в конфигурацию GConf.

### Модуль аутентификации PAM

GDM использует модуль PAM для аутентификации при входе в систему. PAM означает: подключаемый модуль аутентификации (Pluggable Authentication Module), и используется большинством программ, требующим аутентификацию пользователя. Это позволяет администратору настроить способы аутентификации для разных программ входа в систему (например: ssh, login, хранителей экрана и так далее).

PAM является достаточно сложным модулем со множеством параметров конфигурации, поэтому в этом документе не представлены детали его настройки, а лишь даётся необходимая информация по настройке PAM для работы с GDM. Предполагается, что читатель, желающий настроить PAM, знаком с его документацией и понимает принципы конфигурирования PAM, а также термины, используемые в этом разделе.

На разных операционных системах PAM имеет различные, но похожие интерфейсы конфигурирования, поэтому обратитесь к страницам руководства pam.d или pam.conf для подробной информации. Необходимо ознакомиться с документацией PAM и возможным влиянием на безопасность тех изменений, которые вы собираетесь внести в конфигурацию.

По умолчанию GDM использует сервисы PAM с именем «gdm» для обычного входа и «gdm-autologin» для автоматического входа. Если эти сервисы не определены в конфигурационных файлах «pam.d» или «pam.conf», то GDM будет использовать обычное поведение PAM. На большинстве систем это сработает, но автоматический вход в систему может не работать, если не определен сервис PAM «gdm-autologin».

Сценарий `PostLogin` выполняется перед вызовом метода pam_open_session, а сценарий `PreSession` после, что позволяет системному администратору добавить любые сценарии до или после того, как PAM инициализирует сеанс.

Если вы хотите использовать с GDM другие типы аутентификации (например, сканирование отпечатков пальцев или карты SmartCard), то это реализовывается с помощью соответствующих сервисных модулей PAM, а не изменением кода GDM. За дополнительной информацией обращайтесь к документации PAM. То как использовать такие механизмы часто обсуждается в списке рассылки

    gdm-list@gnome.org

, за дополнительной информацией можно обратиться в архив рассылки.

PAM имеет некоторые ограничения при работе с несколькими типами аутентификации одновременно, например возможность одновременного использования карт SmartCard и аутентификации путем ввода имени пользователя и пароля. Есть способы использования такой возможности, и лучший способ их изучить — это установить конфигурацию с такими настройками.

Если не работает автоматический вход в систему проверьте наличие сервиса «gdm-autologin» в конфигурации PAM. Для включения этой возможности необходимо использовать модуль PAM, который не производит аутентификации или возвращает PAM_SUCCESS со всех интерфейсов, например модуль pam_allow.so, с использованием которого конфигурация PAM с включённым сервисом «gdm-autologin» будет выглядеть следующим образом:

           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

Указанная настройка не будет генерировать записи lastlog. Если они необходимы, то используйте следующее для сеанса:

           gdm-autologin сеанс требует  pam_unix_session.so.1

Если компьютером пользуются несколько человек, то автоматический вход в систему нежелателен. Пользователи могут входить в систему, не вводя пароль. Эта возможность настраивается отдельно для каждого пользователя; для этого нужно, чтобы пользователь был членом группы «nopasswdlogin», а конфигурационный файл PAM содержал следующую строку:

          gdm auth  sufficient  pam_succeed_if.so  user ingroup nopasswdlogin

### базы utmp и wtmp

GDM создает записи в базах данных utmp и wtmp учёта пользователей во время входа и выхода пользователей из системы. База данных utmp содержит информацию о пользователе и его правах доступа, которая доступна с помощью команд: `finger`, `last`, `login` и `who`. База данных wtmp содержит историю базы utmp. Для получения дополнительной информации обратитесь к страницам man utmp и wtmp.

### Схема аутентификации X сервера

Файлы аутентификации X сервера находятся во вновь создаваемом во время запуска подкаталоге в `<var>/run/gdm`>. Эти файлы содержат ключ доступа для X клиента и сервера, который уникален для каждого сеанса, поэтому пользователи из разных сеансов не мешают друг другу.

GDM поддерживает только схему аутентификации X сервера «MIT-MAGIC-COOKIE-1». Другие схемы не обладают значительными преимуществами и на настоящий момент не являются приоритетными. Следует быть особенно осторожным при использовании протокола XDMCP, так как аутентификационная информация (в виде cookies) передается по сети в открытом виде, поэтому она доступна для перехвата. В этом случае злоумышленник может просто перехватить ключ при входе в систему. Для предотвращения этого необходимо использовать туннелирование X соединений через ssh, вместо протокола XDMCP. Протокол XDMCP не достаточно безопасен, чтобы его использовать как протокол удалённого графического терминала, в большинстве случаев лучше использовать «ssh -Y» вместо возможностей GDM по работе с XDMCP.

### Безопасность XDMCP

Не смотря на то, что дисплей защищен аутентификационной информацией (в cookies), события XEvents и соответствующие нажатия клавиш при вводе пароля будут переданы по сети в открытом виде и их легко перехватить.

XDMCP в основном предназначен для использования в лабораторных терминалах, где клиентам необходима сеть лишь для соединения с сервером. Лучшей политикой безопасности будет использование таких клиентов в отдельной подсети к которой нет доступа извне, и единственной точкой доступа во внешние сети является сам сервер. Подобные конфигурации нельзя использовать в сетях с неуправляемыми концентраторами или прослушиваемых сетях.

### Управление доступом XDMCP

Контроль доступа XDMCP реализован с использованием библиотеки TCP Wrappers. В некоторых операционных системах GDM собран без поддержки TCP Wrappers, поэтому подобные возможности могут быть недоступны.

Необходимо использовать имя демона `gdm` в файлах `<etc>/hosts.allow` и `<etc>/hosts.deny`. Например, чтобы запретить машинам из домена `.evil.domain` входить в систему, необходимо добавить

    gdm: .evil.domain

в файл `<etc>/hosts.deny`. Возможно, также необходимо добавить

    gdm: .your.domain

в файл `<etc>/hosts.allow`, если по умолчанию запрещены все сервисы со всех машин. За деталями обратитесь к станицам man hosts.allow(5).

### Безопасность сетевого экрана

Хотя GDM и пытается предупредить возможные атаки на протокол XDMCP, рекомендуется заблокировать порт XDMCP (обычно UDP 177) на сетевом экране до тех пор, пока он действительно не понадобится. GDM пытается предотвратить DoS атаки, но X протокол традиционно небезопасен и его следует использовать только в безопасных средах. Кроме того, каждое удалённое соединение потребляет относительно много ресурсов, поэтому организовать DoS атаку через XDMCP намного проще, чем на веб-сервер.

Также рекомендуем заблокировать все порты, используемые X-сервером (все TCP-порты, начиная с 6000; один для каждого номера дисплея). GDM использует номера дисплеев больше 20 для гибких серверов-по-требованию.

X — не очень безопасный протокол при использовании его через интернет, но XDMCP еще менее безопасен.

### Средство PolicyKit

GDM можно настроить на использование средства PolicyKit, чтобы позволить системному администратору управлять видимостью кнопок выключения и перезагрузки системы на экране программы приветствия.

Видимость этих кнопок регулируется действиями:`org.freedesktop.consolekit.system.stop-multiple-users` и `org.freedesktop.consolekit.system.restart-multiple-users` соответственно. Политика этих действий может быть установлена с помощью утилиты polkit-gnome-authorization или консольной программой polkit-auth.

### RBAC: управление доступом по ролям

GDM можно настроить на использование RBAC вместо PolicyKit. В этом случае используется конфигурация RBAC для управления видимостью кнопок выключения и перезагрузки системы на экране программы приветствия.

Например, в системе Oracle Solaris для этого используется авторизация «solaris.system.shutdown». Достаточно изменить файл `/etc/user_attr` так, чтобы учётная запись «gdm» осуществляла эту авторизацию.

## Поддержка ConsoleKit

GDM включает поддержку публикации информации учётной записи пользователя с помощью системы учёта сеансов пользователей ConsoleKit, которая может отслеживать вошедших пользователей и в этой роли заменять файлы utmp и utmpx, которые существуют в большинстве UNIX подобных системах.

Когда GDM собирается создать новый процесс входа для пользователя, он вызывает привилегированный метод ConsoleKit, чтобы открыть новую сессию для этого пользователя. В это время GDM также предоставляет ConsoleKit информацию о сессии пользователя, такую как: идентификатор пользователя, имя X11 Display, которое будет ассоциировано с сессией, имя хоста, с которого происходит сессия (полезно в случае XDMCP сессии), является ли эта сессия присоединенной или нет и т.д. Как сущность, инициирующая пользовательский процесс, GDM находится в уникальном положении, чтобы знать о пользовательском сеансе и быть доверенным для предоставления этой информации. Использование этого привилегированного метода ограничено политикой безопасности шины сообщений системы D-Bus.

Если пользователь с существующей сессией прошел аутентификацию в GDM и просит возобновить существующую сессию, GDM вызывает привилегированный метод ConsoleKit для разблокировки этой сессии. Точные детали того, что происходит, когда сессия получает этот сигнал разблокировки, не определены и зависят от конкретной сессии. Однако большинство сеансов в ответ разблокируют экранную заставку.

Когда пользователь начинает выход из системы, или GDM или сеанс неожиданно завершается, регистрация сеанса пользователя в ConsoleKit будет отменена.

## Настройка

GDM имеет множество интерфейсов настройки: точки подключения сценариев, настройка демона, настройки программы приветствия, глобальные параметры сеанса, интеграцию с настройками gnome-settings-daemon и параметрами сеанса. Подробнее это рассмотрено далее.

### Точки подключения сценариев

Точки подключения сценариев GDM находятся в каталоге `<etc>/gdm/`:

    Xsession
    Init/
    PostLogin/
    PreSession/
    PostSession/

Работа сценариев `Init`, `PostLogin`, `PreSession` и `PostSession` описана далее.

Для каждого типа есть сценарий c именем «Default», который будет выполнен по умолчанию и располагается в каталоге, соответствующем типу сценария. Так сценарий по умолчанию для типа `Init` — `<etc>/gdm/Init/Default`. Если существует сценарий для дисплея, то он будет выполнен вместо сценария по умолчанию. Такие сценарии находятся в тех же каталогах, но их названия совпадают со значением DISPLAY X сервера для нужного дисплея. Например, если существует файл сценария `<Init>/:0`, то он будет выполнен для дисплея «:0».

Все эти сценарии выполняются с привилегиями root и возвращают 0 в случае успешного выполнения, и ненулевой код возврата, если произошел какой-либо сбой, который должен привести к прерыванию сеанса входа. Также обратите внимание, что GDM будет блокироваться до завершения работы сценариев, поэтому если какой-либо из этих сценариев зависнет, это приведет к зависанию процесса входа в систему.

После успешного запуска Xserver для графического интерфейса входа в систему, но до того, как графический интерфейс входа в систему будет отображен, GDM запустит сценарий `Init`. Этот сценарий полезен для запуска программ, которые должны быть запущены во время отображения экрана входа в систему, или для выполнения специальной инициализации, если она требуется.

После успешной аутентификации пользователя GDM выполнит сценарий `PostLogin`, но до того, как выполнена установка сеанса, в том числе перед вызовом pam_open_session. Этот сценарий полезен для инициализации сеанса перед его стартом, например тут можно создавать домашние каталоги пользователей $HOME.

После инициализации сеанса GDM запустит сценарий `PreSession`, который полезен для проведения дополнительной инициализации сеанса. Например, для учёта сеансов.

Когда пользователь завершает свою сессию, GDM запускает сценарий `PostSession`. Обратите внимание, что к моменту выполнения этого сценария Xserver будет остановлен, поэтому к нему не следует обращаться.

Внимание! Сценарий `PostSession` будет выполнен, даже если дисплей недоступен из-за ошибок ввода-вывода и подобных. Поэтому не гарантируется нормальная работа приложений X во время исполнения сценария.

Во время выполнения всех указанных сценариев переменная окружения `$RUNNING_UNDER_GDM` установлена в `yes`. Если сценарий используется совместно с другими менеджерами дисплеев, то это поможет определить, что сценарий вызван из GDM для выполнения специфичного кода.

### Конфигурация автозапуска

Каталог `<share>/gdm/autostart/LoginWindow` содержит файлы в формате, определенном "FreeDesktop.org Desktop Application Autostart Specification". Стандартные функции спецификации могут быть использованы для указания программ, которые должны автозапускаться или запускаться только при заданном значении конфигурации GConf и т.д.

Любые файлы `.desktop` в этом каталоге приведут к автоматическому запуску соответствующей программы с графическим интерфейсом входа в систему. По умолчанию GDM поставляется с файлами, которые автоматически запускают сам графический интерфейс входа в систему gdm-simple-greeter, приложение gnome-power-manager, gnome-settings-daemon и оконный менеджер metacity. Эти программы необходимы для работы программы greeter. Кроме того, предоставляются файлы рабочего стола для запуска различных AT-программ, если установлены значения конфигурации, указанные ниже в разделе Конфигурация универсального доступа.

### Сценарий Xsession

Существует также сценарий `Xsession`, расположенный по адресу `<etc>/gdm/Xsession`, который вызывается между сценариями `PreSession` и `PostSession`. Этот скрипт не поддерживает функцию per-display, как другие скрипты. Этот сценарий используется для фактического запуска пользовательской сессии. Этот сценарий запускается от имени пользователя, и он запускает ту сессию, которая была указана в файле сессии Desktop, выбранном пользователем для запуска.

### Конфигурация демона

Демон GDM конфигурируется с помощью файла `<etc>/gdm/custom.conf.` Значения по умолчанию хранятся в GConf в файле `gdm.schemas`. Рекомендуется, чтобы конечные пользователи изменяли файл `<etc>/gdm/custom.conf`, так как файл схем может быть перезаписан, когда пользователь обновляет свою систему, чтобы иметь более новую версию GDM.

Внимание! Ранние версии GDM содержат дополнительные параметры, которые более не поддерживаемые GDM.

Файл `<etc>/gdm/custom.conf` записан в формате `keyfile` (параметр-значение). Слова в квадратных скобках [ ] определяют названия секций, строки до знака равно (=) являются наименованиями параметров а после — значениями. Пустые и начинающиеся на октоторп (#) строки игнорируются.

Файл `<etc>/gdm/custom.conf` поддерживает секции групп "[daemon]", "[security]" и "[xdmcp]". В каждой группе есть определенные пары ключ/значение, которые могут быть указаны для изменения поведения GDM. Например, чтобы включить вход по таймеру и указать, что пользователь, входящий по таймеру, должен быть пользователем с именем "you", вы должны изменить файл так, чтобы он содержал следующие строки:

    [daemon]
    TimedLoginEnable=true
    TimedLogin=you

Далее приведён полный список поддерживаемых параметров конфигурации:

#### [chooser]

Многоадресная рассылка

      Multicast=false

  Если true и IPv6 включен, chooser отправит многоадресный запрос в локальную сеть и получит ответы от хостов, которые присоединились к многоадресной группе.

MulticastAddr

      MulticastAddr=ff02::1

  Это локальный адрес многоадресной рассылки Link-local.

#### [daemon]

TimedLoginEnable

      TimedLoginEnable=false

  Автоматический вход в систему произойдёт под учётной записью `TimedLogin` по истечении `TimedLoginDelay` секунд неактивности на экране входа в систему. Это полезно для общедоступных терминалов и домашних систем. Если пользователь нажал клавишу на клавиатуре или использовал меню на экране, то время ожидания сбрасывается в `TimedLoginDelay` или 30 секунд, но не более. Если пользователь не ввёл имя учётной записи, а просто нажал ENTER при запросе имени пользователя, то GDM произведет автоматический вход в систему. При этом пароль не будет запрошен. За подробной информацией обращайтесь к подразделу «Безопасность-> Модуль PAM».

TimedLogin

      TimedLogin=

  Учётная запись под которой произойдёт автоматический вход в систему по истечении определённого промежутка времени неактивности.

  Если значение заканчивается вертикальной полосой | (символ pipe), то GDM выполнит указанную программу и будет использовать в качестве пользователя любое значение, возвращаемое программой на стандартном выходе. Программа запускается с переменной окружения DISPLAY, установленной таким образом, чтобы можно было указать пользователя для каждого дисплея. Например, если значение "/usr/bin/getloginuser|", то для получения значения пользователя будет запущена программа "/usr/bin/getloginuser".

TimedLoginDelay

      TimedLoginDelay=30

  Задержка в секундах перед автоматическим входом под учётной записью `TimedLogin`.

AutomaticLoginEnable

      AutomaticLoginEnable=false

  Если истина, то вход под учётной записью `AutomaticLogin` будет произведен немедленно. Аналогично автоматическому входу с задержкой 0 секунд.

AutomaticLogin

      AutomaticLogin=

  Учётная запись под именем которой произойдет немедленный вход в систему, если `AutomaticLoginEnable` установлено в истину.

  Если значение заканчивается вертикальной полосой | (символ pipe), то GDM выполнит указанную программу и будет использовать в качестве пользователя любое значение, возвращаемое программой на стандартном выходе. Программа запускается с переменной окружения DISPLAY, установленной таким образом, чтобы можно было указать пользователя для каждого дисплея. Например, если значение "/usr/bin/getloginuser|", то для получения значения пользователя будет запущена программа "/usr/bin/getloginuser".

User

      User=gdm

  Учётная запись под которой выполняется программа приветствия и другие графические приложения. Смотрите также описание параметра `Group` и раздел «Безопасность->Учётная запись пользователя и группы GDM».

Group

      Group=gdm

  Имя группы, под которой программа приветствия и другие графические приложения будут запущены. Смотрите также описание параметра `User` и раздел этого документа «Безопасность-> Учётные записи пользователя и группы GDM».

#### Параметры отладки

##### [debug]

Enable

      Enable=false

  Чтобы включить отладку, установите ключ debug/Enable в "true" в файле `<etc>/gdm/custom.conf` и перезапустите GDM. После этого вывод отладки будет отправлен в файл системного журнала (`<var>/log/messages или <var>/adm/messages` `в зависимости` от вашей операционной системы).

#### Параметры приветствия

##### [greeter]

IncludeAll

      IncludeAll=true

  Если true, то браузер face будет показывать всех пользователей на локальной машине. Если false, то в браузере лица будут отображаться только те пользователи, которые недавно вошли в систему.

  Когда этот ключ равен true, GDM вызовет fgetpwent() для получения списка локальных пользователей в системе. Все пользователи с идентификатором пользователя менее 500 (или 100, если система работает на Oracle Solaris) отфильтровываются. Face Browser также отображает всех пользователей, которые ранее входили в систему (например, пользователей NIS/LDAP). Он получает этот список через вызов интерфейса `ck-history` ConsoleKit. Он также отфильтрует всех пользователей, у которых нет действительной оболочки (действительными оболочками считаются любые оболочки, которые возвращает getusershell() - /sbin/nologin или /bin/false считаются недействительными оболочками, даже если getusershell() возвращает их).

  Если false, то GDM более просто отображает только пользователей, которые ранее входили в систему (локальные пользователи или пользователи NIS/LDAP), вызывая интерфейс `ck-history` ConsoleKit.

Include

      Include=

  Устанавливается в список пользователей, которых следует всегда включать в браузер лиц. Это значение задается в виде списка пользователей, разделенных запятыми. По умолчанию значение пустое.

Exclude

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

  Устанавливается в список пользователей, которых следует всегда исключать в браузере лиц. Это значение задается в виде списка пользователей, разделенных запятыми. Обратите внимание, что настройка в `custom.conf` переопределяет значение по умолчанию, поэтому если вы хотите добавить дополнительных пользователей в список, то вам нужно установить значение по умолчанию с добавлением дополнительных пользователей в список.

#### Параметры безопасности

##### [security]

DisallowTCP

      DisallowTCP=true

  Если истина, то к параметрам запуска локального X сервера всегда добавляется `-nolisten tcp`, что запрещает TCP соединения. Это более безопасная настройка при использовании удалённых соединений.

#### Поддержка XDCMP

##### [xdmcp]

DisplaysPerHost

      DisplaysPerHost=1

  Чтобы предотвратить атаки путем переполнения очереди ожидающий соединений, GDM разрешает только одно соединение с одной машины. Если необходимо предоставить больше дисплеев для машин с несколькими экранами, то следует увеличить этот параметр.

  Внимание! Количество допустимых локальных дисплеев не ограничивается. Эта опция ограничивает только удалённые соединения через протокол XDMCP.

Enable

      Enable=false

  Установка в истину включает поддержку XDMCP протокола, разрешая GDM управлять удалёнными дисплеями и X терминалами.

  Запросы прослушиваются на UDP порту 177. См. описание параметра «Port» для дополнительных сведений.

  Если GDM собран с соответствующими опциями, то управление удалёнными дисплеями может быть осуществлено через библиотеку TCP Wrappers. Имя сервиса — `gdm`

  Вы должны добавить

      gdm:.my.domain

  в `<etc>/hosts.allow,` в зависимости от конфигурации TCP Wrappers. Подробности см. на странице руководства hosts.allow.

  Внимание! XDMCP - небезопасный протокол, и на сетевом экране следует заблокировать UDP порт 177 до тех пор, пока он действительно не понадобится.

HonorIndirect

      HonorIndirect=true

  Разрешает XDMCP INDIRECT выбор (т.е. удалённое исполнение программы `gdmchooser`) для X терминалов, не имеющих собственных обозревателей дисплеев.

MaxPending

      MaxPending=4

  GDM фиксирует длину очереди ожидающих соединений для предотвращения атак на сервис. Одновременно могут стартовать только MaxPending дисплеев.

  Этот параметр не ограничивает количество управляемых удалённых соединений. Он ограничивает только количество дисплеев инициирующих соединение одновременно.

MaxSessions

      MaxSessions=16

  Определяет максимальное количество одновременно обслуживаемых соединений удалённых дисплеев. То есть общее количество удалённых дисплеев на данной машине.

MaxWait

      MaxWait=30

  Когда GDM готов обслужить дисплей, он отправляет пакет ACCEPT, содержащий уникальный идентификатор сеанса, который в дальнейшем будет использован в протоколе XDMCP.

  Затем GDM поместит идентификатор сеанса в очередь ожидающих соединений для дисплея в ответ на запрос MANAGE.

  Если ответ не был получен в течение MaxWait секунд, GDM объявит дисплей недоступным и удалит из очереди, освободив место для других дисплеев.

MaxWaitIndirect

      MaxWaitIndirect=30

  Этот параметр определяет максимальное количество секунд между тем, как пользователь выбирает машину и последующим непрямым запросом соединения с машиной. По истечении времени информация о выбранной машине стирается и место для непрямых запросов освобождается для других дисплеев. Эта информация также может быть стёрта, если больше, чем `MaxPendingIndirect` машин пытаются послать непрямые запросы.

PingIntervalSeconds

      PingIntervalSeconds=60

  Если Xserver не отвечает в течение указанного количества секунд, то соединение прерывается и сессия завершается. Когда это происходит, демон умирает с сигналом ALARM. Обратите внимание, что в GDM 2.20 и более ранних версиях этот параметр умножается на 2, поэтому при переходе с GDM 2.20 и более ранних версий на более новую может потребоваться увеличить таймаут.

  Внимание! Ранее GDM использовал параметр `PingInterval`, который указывался в минутах. В большинстве случаев этот параметр желательно устанавливить менее минуты, например если необходимо использование XDMCP (лабораторные терминалы), задержка более чем 15 секунд действительно означает, что терминал выключен или перезагружается, и поэтому необходимо завершить сеанс.

Port

      Port=177

  Порт UDP, который `gdm` прослушивает на XDMCP запросы. Изменяйте его, только если вы уверены в ваших действиях.

Willing

      Willing=<etc>/gdm/Xwilling

  Когда машина посылает пакет WILLING в ответ на QUERY, то она посылает строку, сообщающую статус этого сервера. Обычно это системный идентификатор, но можно создать сценарий, отражающий любое сообщение. Если такого сценария нет или значение параметра пустое, то будет послано сообщение по умолчанию. Если сценарий выполнился успешно и вернул сообщение, то будет отослана первая строка этого сообщения. Сценарий выполняется не чаще одного раза в три секунды для предотвращения DoS атак, путем забрасывания машины пакетами QUERY.

### Настройка простой программы приветствия (Simple Greeter)

По умолчанию GDM использует программу приветствия «Simple Greeter» и она настраивается через GConf. Значения по умолчанию находятся в файле `gdm-simple-greeter.schemas`. Эти значения можно переопределить если учётная запись «gdm» имеет домашний каталог $HOME с правом записи, чтобы сохранять настройки GConf. Значения можно редактировать с помощью программ: `gconftool-2` или `gconf-editor`. Допустимы следующие настройки:

#### Параметры конфигурации программы приветствия

/apps/gdm/simple-greeter/banner_message_enable

      false (boolean)

  Определяет, показывать ли приветствующее текстовое сообщение.

/apps/gdm/simple-greeter/banner_message_text

      NULL (string)

  Содержит текстовое сообщения приветствия.

/apps/gdm/simple-greeter/disable_restart_buttons

      false (boolean)

  Отражать ли кнопку перезагрузки системы на экране входа в систему.

/apps/gdm/simple-greeter/disable_user_list

      false (boolean)

  Если true, то браузер лиц с известными пользователями не отображается в окне входа в систему.

/apps/gdm/simple-greeter/logo_icon_name

      computer (string)

  Содержит имя значка темы для отображения логотипа приветствия.

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

      [] (string list)

  Устанавливается в список языков, которые будут отображаться по умолчанию в окне входа в систему. Значение по умолчанию - "[]". При настройке по умолчанию отображается только системный язык по умолчанию и опция "Другой...", которая вызывает диалоговое окно с полным списком доступных языков, которые пользователь может выбрать.

  Пользователи не должны изменять эту настройку вручную. Вместо этого GDM отслеживает все языки, выбранные в этом ключе конфигурации, и показывает их в комбинированном окне языка вместе с выбором "Другой...". Таким образом, часто выбираемые языки легче выбрать.

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

      [] (string list)

  Устанавливается в список раскладок клавиатуры, которые будут отображаться по умолчанию на панели входа в систему. Значение по умолчанию - "[]". При значении по умолчанию отображается только системная раскладка клавиатуры по умолчанию и опция "Другие...", которая вызывает диалоговое окно с полным списком доступных раскладок клавиатуры, которые пользователь может выбрать.

  Пользователи не должны изменять эту настройку вручную. Вместо этого GDM отслеживает все раскладки клавиатуры, выбранные в этом конфигурационном ключе, и показывает их в комбинированном окне раскладки клавиатуры вместе с выбором "Другая...". Таким образом, часто выбираемые раскладки клавиатуры легче выбрать.

/apps/gdm/simple-greeter/wm_use_compiz

      false (boolean)

  Использовать ли менеджер окон compiz вместо metacity.

### Параметры универсального доступа

В этом разделе описаны параметры конфигурации доступности, доступные в GDM.

#### Диалог универсального доступа GDM и ключи GConf

На панели приветствия GDM на экране входа в систему отображается значок Универсального доступа. При нажатии на этот значок открывается диалог Универсального доступа GDM. В диалоге Универсального доступа GDM имеется список флажков, с помощью которых пользователь может включить или отключить соответствующие вспомогательные средства.

Флажки, соответствующие экранной клавиатуре, экранной лупе и вспомогательным средствам чтения с экрана, действуют на три клавиши GConf, которые описаны в следующем разделе этого документа. При включении или выключении этих флажков соответствующая клавиша GConf устанавливается в положение "true" или "false". Если для ключа GConf установлено значение true, запускаются вспомогательные инструменты, связанные с этим ключом GConf. Если для ключа GConf установлено значение "false", все запущенные вспомогательные инструменты, связанные с этим ключом GConf, завершаются. Эти ключи GConf не сбрасываются автоматически в состояние по умолчанию после входа пользователя в систему. Следовательно, вспомогательные инструменты, которые были запущены во время последнего сеанса входа в GDM, будут автоматически запущены при следующем сеансе входа в GDM.

Другие флажки в диалоге доступности GDM не имеют соответствующих ключей GConf, потому что для обеспечения предлагаемых ими функций доступности не запускается дополнительная программа. Эти другие опции соответствуют функциям Универсального доступа, предоставляемым Xserver, который всегда запущен во время сеанса GDM.

#### Ключи Универсального доступа GConf

GDM предлагает следующие ключи GConf для управления своими функциями Универсального доступа:

##### Ключи конфигурации GDM

/desktop/gnome/interface/accessibility

      false (boolean)

  Управляет тем, будет ли инфраструктура Универсального доступа запускаться с графическим интерфейсом GDM. Это необходимо для работы многих программ технологии Универсального доступа.

/desktop/gnome/applications/at/screen_magnifier_enabled

      false (boolean)

  Если установлено, то вспомогательные инструменты, связанные с этим ключом GConf, будут запускаться с помощью программы GDM GUI. По умолчанию это приложение экранной лупы.

/desktop/gnome/applications/at/screen_keyboard_enabled

      false (boolean)

  Если установлено, то вспомогательные инструменты, связанные с этим ключом GConf, будут запускаться с помощью программы GDM GUI. По умолчанию это приложение экранной клавиатуры.

/desktop/gnome/applications/at/screen_reader_enabled

      false (boolean)

  Если установлено, то вспомогательные инструменты, связанные с этим ключом GConf, будут запускаться с помощью программы GDM GUI. По умолчанию это приложение для чтения с экрана.

#### Связывание ключей GConf с инструментами обеспечения Универсального доступа

Для ключей GConf screen_magnifier_enabled, screen_keyboard_enabled и screen_reader_enabled запускаемое вспомогательное средство зависит от файлов рабочего стола, расположенных в каталоге автозапуска GDM, как описано в разделе "Конфигурация автозапуска" данного руководства. Любой файл рабочего стола в каталоге автозапуска GDM может быть связан с этими GConf-ключами путем указания этого GConf-ключа в значении AutostartCondition в файле рабочего стола. Таким образом, точная строка AutostartCondition в файле рабочего стола может быть одной из следующих:

    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

Если ключ Универсального доступа имеет значение true, то будет запущена любая программа, связанная с этим ключом в файле автозапуска рабочего стола GDM (если только ключ Hidden не установлен на true в этом файле рабочего стола). Один ключ GConf может даже запустить несколько вспомогательных инструментов, если в каталоге автозапуска GDM есть несколько файлов рабочего стола с этим условием автозапуска.

#### Пример изменения конфигурации инструмента Универсального доступа

Например, если GNOME распространяется с GOK в качестве экранной клавиатуры по умолчанию, то при желании ее можно заменить другой программой. Чтобы заменить GOK приложением экранной клавиатуры "onboard" и дополнительно активировать вспомогательный инструмент "mousetweaks" для поддержки убежища, необходимо выполнить следующую конфигурацию.

Создайте файл рабочего стола для onboard и второй для mousetweaks; например, onboard.desktop и mousetweaks.desktop. Эти файлы должны быть помещены в каталог автозапуска GDM и иметь формат, описанный в разделе "Конфигурация автозапуска" данного документа.

Ниже приведен пример файла `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

Ниже приведен пример файла `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

Обратите внимание на строку с AutostartCondition, которая связывает оба файла рабочего стола с ключом GConf для экранной клавиатуры.

Чтобы запретить запуск GOK, необходимо удалить или деактивировать файл рабочего стола для экранной клавиатуры GOK. В противном случае одновременно будут запускаться onboard и GOK. Это можно сделать, удалив файл gok.desktop из каталога автозапуска GDM или добавив в файл gok.desktop параметр ключа "Hidden=true".

После внесения этих изменений GOK больше не будет запускаться, когда пользователь активирует экранную клавиатуру в сеансе GDM; вместо этого будут запускаться onboard и mousetweaks.

### Глобальные настройки сеанса

Программа приветствия GDM использует некоторые механизмы, что и сеанс рабочего места. Поэтому они используют многие общие параметры в GConf. Для всех таких параметров программа приветствия использует значения по умолчанию, пока они не будут переопределены: 1) установленной обязательной политикой GDM; 2) обязательной системной политикой. GDM устанавливает собственную обязательную политику, чтобы усилить безопасность.

### Демон параметров GNOME

GDM включает следующие подключаемые модули gnome-settings-daemon: a11y-keyboard, background, sound, xsettings.

Они обеспечивают, например, фоновую картинку, шрифт и настройки темы, звуки и так далее.

С помощью GConf подключаемые модули можно отключить. Например, чтобы отключить звуковой модуль, следует использовать параметр `/apps/gdm/simple-greeter/settings-manager-plugins/sound/active`.

### Параметры сеанса GDM

Сеансы GDM определяются в соответствии со спецификациями рабочего пространства FreeDesktop.org, которые можно получить по адресу: http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec.

По умолчанию GDM устанавливает файлы рабочего стола в каталог `<share>/xsessions`. GDM будет искать файлы рабочего стола в следующем порядке: `<etc>/X11/sessions/`, `<dmconfdir>/Sessions`, `<share>/xsessions`, и `<share>/gdm/BuiltInSessions`. По умолчанию `<dmconfdir>` установлен в `<etc>/dm/`, если GDM не настроен на использование другого каталога с помощью опции "--with-dmconfdir".

Сеанс можно запретить, добавив в файл рабочего места строку: `Hidden=true`.

Файлы рабочего стола GDM поддерживают специфическое для GDM расширение, ключ с именем "X-GDM-BypassXsession". Если ключ не указан в файле рабочего стола, его значение по умолчанию равно "false". Если этот ключ указан в файле рабочего стола как "true", то GDM будет запускать программу, указанную в ключе "Exec" файла рабочего стола, непосредственно при запуске сеанса пользователя. Он не будет запускать программу через скрипт `<etc>/gdm/Xsession`, что является нормальным поведением. Поскольку обход скрипта `<etc>/gdm/Xsession` позволяет избежать установки пользовательской сессии с обычными настройками системы и пользователя, сессии, запущенные таким образом, могут быть полезны для отладки проблем в системе или пользовательских скриптах, которые могут помешать пользователю начать сессию.

### Параметры языка и пользовательских сеансов GDM

Сеанс пользователя по умолчанию и выбор языка находятся в файле `~/.dmrc`. Этот файл создается при первом входе пользователя в соответствии с выбранными значениями. В дальнейшем значения могут быть изменены при последующем входе в систему. GDM запомнит последний выбор пользователя для следующего входа.

Файл `~/.dmrc` записан в стандартном формате `INI`, имеет одну секцию `[Desktop]` и два параметра: `Session` и `Language`.

Параметр `Session` определяет базовое имя файла сеанса `.desktop`. Имя указывается без расширения `.desktop`. Параметр `Language` определяет язык по умолчанию. Если любой из этих параметров отсутствует, то используются общие значения по умолчанию. Обычно файл выглядит следующим образом:

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

## Команды GDM

### Команды GDM для пользователя root

Пакет GDM содержит следующие команды, предназначенные для пользователя root в каталоге `sbindir`:

#### `gdm` Параметры командной строки

`gdm` - это главный сервис, который устанавливает графическое окружение входа в систему и запускает необходимые вспомогательные программы.

##### `gdm` Параметры командной строки

-?, --help

  Кратка справка по параметрам командной строки.

--fatal-warnings

  Завершать работу GDM при возникновении любых предупреждений.

--timed-exit

  Завершить работу демона после 30 секунд. Полезно для отладки.

--version

  Вывести версию демона.

#### `gdm-restart` Параметры командной строки

`gdm-restart` останавливает и перезапускает демон GDM, посылая сигнал HUP. Это вызовет немедленное завершение всех сеансов и выход всех пользователей вошедших через GDM.

#### `gdm-safe-restart` Параметры командной строки

`gdm-safe-restart` останавливает и перезапускает демон GDM, посылая его сигнал USR1. GDM будет перезапущен как только все пользователи выйдут из системы.

#### `gdm-stop` Параметры командной строки

`gdm-stop` останавливает демон GDM, посылая сигнал TERM.

## Разрешение проблем

Этот раздел содержит полезные советы как заставить GDM работать. Если у вас проблемы с GDM, вы можете сообщить об ошибке или написать письмо в лист рассылки (как это сделать описано ранее во введении).

Если GDM работает некорректно, всегда полезно включить отладочную информацию. Чтобы включить отладку, установите ключ debug/Enable в "true" в файле `<etc>/gdm/custom.conf` и перезапустите GDM. Затем используйте GDM до момента сбоя, и отладочная информация будет отправлена в файл системного журнала (`<var>/log/messages` или `<var>/adm/messages` в зависимости от вашей операционной системы). Если вы поделитесь этим выводом с сообществом GDM через сообщение об ошибке или электронную почту, пожалуйста, включите только отладочную информацию, связанную с GDM, а не весь файл, поскольку он может быть большим. Если вы не видите никакого вывода GDM syslog, возможно, вам необходимо настроить syslog (см. man-страницу syslog ).

### GDM не запускается

Существует множество проблем из-за которых GDM не запускается, в этой секции описаны лишь общие проблемы и способы их отслеживания при старте GDM. Достаточно непросто отследить проблемы, из-за которых GDM «тихо» завершает работу.

Во-первых, убедитесь, что сервер X правильно настроен. Файл конфигурации GDM содержит секцию [server-Standard], используемую для запуска X сервера. Проверьте, что эта команда запускается в вашей системе в командной строке консоли и запускает X сервер, в противном случае, вероятно, проблема в параметрах X сервера. Обратитесь к журналу ошибок X сервера. Возможно, X сервер требует других параметров командной строки. Если это так, измените конфигурацию GDM, чтобы тот запускал X сервер с параметрами корректными для вашей системы.

Также проверьте, что каталог `/tmp` имеет корректные права доступа и владельца, а также что системный диск не переполнен, иначе это приведет к невозможности запустить GDM.

## Лицензия

Эта программа ― свободное программное обеспечение. Вы можете распространять или изменять его на условиях лицензии GNU General Public License опубликованной Free Software Foundation; либо версии 2 лицензии, либо (на ваше усмотрение) любой более поздней версии.

Эта программа распространяется в надежде на то, что приложение будет полезно, но БЕЗ ВСЯКИХ ГАРАНТИЙ; не гарантируется даже ПРИГОДНОСТЬ или СООТВЕСТВИЕ КАКИМ-ЛИБО ТРЕБОВАНИЯМ. Для получения дополнительной информации ознакомьтесь с GNU General Public License.

Копия лицензии GNU General Public License включена как приложение к документу Руководство пользователя GNOME. Также копию GNU General Public License можно получить от Free Software Foundation, посетив веб-сайт организации или направив письмо по адресу:

     Free Software Foundation, Inc. 51 Franklin Street, Fifth FloorBoston, MA02110-1301USA