# Руководство по программе графического входа в систему

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 и/или его филиалы. Все права защищены.

Разрешается копировать, распространять и/или изменять этот документ на условиях лицензии GNU Free Documentation License (GFDL), версии 1.1 или любой более поздней версии, опубликованной Фондом свободного программного обеспечения (Free Software Foundation), без неизменяемых частей и без текстов на обложках. Вы можете найти копию лицензии GFDL по этой ссылке или в файле COPYING-DOCS, распространяемом с этим документом.

Это руководство — часть документации GNOME, которая распространяется на условиях лицензии GNU FDL. Если вы хотите распространять это руководство отдельно от остальной документации, вам следует приложить к руководству копию лицензии, как описано в разделе 6 лицензии.

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

ДОКУМЕНТ И ИЗМЕНЁННЫЕ ВЕРСИИ ДОКУМЕНТА ПРЕДОСТАВЛЯЮТСЯ ПОЛЬЗОВАТЕЛЮ НА УСЛОВИЯХ ЛИЦЕНЗИИ GNU FREE DOCUMENTATION LICENSE С УВЕДОМЛЕНИЕМ О ТОМ, ЧТО:

1. ДОКУМЕНТ РАСПРОСТРАНЯЕТСЯ «КАК ЕСТЬ», БЕЗ ВСЯКИХ ГАРАНТИЙ, ЯВНЫХ ИЛИ НЕЯВНЫХ, ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЙ, ГАРАНТИИ ТОГО, ЧТО ДОКУМЕНТ ИЛИ ИЗМЕНЁННАЯ ВЕРСИЯ ДОКУМЕНТА СВОБОДНА ОТ ДЕФЕКТОВ, ПРИГОДНА К ПРОДАЖЕ, ПРИГОДНА К ИСПОЛЬЗОВАНИЮ В ОПРЕДЕЛЁННЫХ ЦЕЛЯХ ИЛИ НЕ НАРУШАЕТ ЗАКОНЫ. ВЕСЬ РИСК, КАСАЮЩИЙСЯ КАЧЕСТВА, ТОЧНОСТИ ИЛИ ПРАВИЛЬНОСТИ ДОКУМЕНТА ИЛИ ИЗМЕНЁННЫХ ВЕРСИЙ ДОКУМЕНТА, ЛЕЖИТ НА ВАС. ЕСЛИ ДОКУМЕНТ ИЛИ ИЗМЕНЁННАЯ ВЕРСИЯ ДОКУМЕНТА ИМЕЕТ НЕДОСТАТКИ, ВЫ (А НЕ АВТОР ДОКУМЕНТА ИЛИ ЕГО ПОМОЩНИК) БЕРЁТЕ НА СЕБЯ СТОИМОСТЬ ЛЮБОЙ НЕОБХОДИМОЙ ДОРАБОТКИ, КОРРЕКЦИИ ИЛИ ВОССТАНОВЛЕНИЯ. ЭТОТ ОТКАЗ ОТ ГАРАНТИЙ СОСТАВЛЯЕТ ВАЖНУЮ ЧАСТЬ ЛИЦЕНЗИИ. НИКАКОЕ ИСПОЛЬЗОВАНИЕ ДОКУМЕНТА ИЛИ ИЗМЕНЁННОЙ ВЕРСИИ ДОКУМЕНТА НЕ ДОПУСКАЕТСЯ БЕЗ ДАННОГО ПРЕДУПРЕЖДЕНИЯ И

2. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ И НИ ПРИ КАКОМ ЗАКОННОМ СПОСОБЕ, НИ ПО КАКОМУ СОГЛАШЕНИЮ ИЛИ ДРУГОЙ ПРИЧИНЕ, АВТОР, СОЗДАТЕЛЬ, ПОМОЩНИКИ ИЛИ РАСПРОСТРАНИТЕЛИ ДОКУМЕНТА НЕ НЕСУТ ОТВЕТСТВЕННОСТЬ ЗА ПРЯМОЙ, КОСВЕННЫЙ, СПЕЦИАЛЬНЫЙ, СЛУЧАЙНЫЙ ИЛИ ПРЕДНАМЕРЕННЫЙ УЩЕРБ ЛЮБОГО СВОЙСТВА, ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЯ, ПОТЕРЮ РЕПУТАЦИИ, РАБОТОСПОСОБНОСТИ, КОМПЬЮТЕРНЫЕ СБОИ ИЛИ ПОЛОМКИ, ИЛИ ЛЮБОЙ ДРУГОЙ УЩЕРБ ИЛИ ПОТЕРИ, ВОЗНИКАЮЩИЕ ВСЛЕДСТВИЕ ИЛИ СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ДОКУМЕНТА ИЛИ ИЗМЕНЁННЫХ ВЕРСИЙ ДОКУМЕНТА, ДАЖЕ ЕСЛИ СТОРОНА БЫЛА УВЕДОМЛЕНА О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

Настоящее руководство содержит описание GDM версии 2.26.0. Дата последнего обновления: 02.10.2009.
Nikita Belobrov
qvzqvz@gmail.com
2008
Nikita Belobrov
Stas Solovey
whats_up@tut.by
2013
Stas Solovey

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

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

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

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

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

Greeter - The graphical login window (provided by `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` от имени администратора системы и запустит программу приветствия на данном дисплее.

The greeter program is run as the unprivileged "gdm" user/group. This user and group are described in the "Security" section of this document. The main functions of the greeter program are to provide a mechanism for selecting an account for log in and to drive the dialogue between the user and system when authenticating that account. The authentication process is driven by Pluggable Authentication Modules (PAM). The PAM modules determine what prompts (if any) are shown to the user to authenticate. On the average system, the greeter program will request a username and password for authentication. However some systems may be configured to use supplemental mechanisms such as a fingerprint or SmartCard readers. GDM can be configured to support these alternatives in parallel with greeter login extensions and the `--enable-split-authentication` `./configure` option, or one at a time via system PAM configuration.

Расширение для поддержки смарт-карт можно включить или выключить с помощью 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

The Face Browser is the interface which allows users to select their username by clicking on an image. This feature can be enabled or disabled via the org.gnome.login-screen disable-user-list GSettings key and is on by default. When disabled, users must type their complete username by hand. When enabled, it displays all local users which are available for login on the system (all user accounts defined in the /etc/passwd file that have a valid shell and sufficiently high UID) and remote users that have recently logged in. The face browser in GDM 2.20 and earlier would attempt to display all remote users, which caused performance problems in large, enterprise deployments.

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

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

Изображения пользователей, которые использует 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 подобных системах.

When GDM is about to create a new login process for a user it will call a privileged method of ConsoleKit in order to open a new session for this user. At this time GDM also provides ConsoleKit with information about this user session such as: the user ID, the X11 Display name that will be associated with the session, the host-name from which the session originates (useful in the case of an XDMCP session), whether or not this session is attached, etc. As the entity that initiates the user process, GDM is in a unique position to know about the user session and to be trusted to provide these bits of information. The use of this privileged method is restricted by the use of the D-Bus system message bus security policy.

In case a user with an existing session has authenticated at GDM and requests to resume that existing session, GDM calls a privileged method of ConsoleKit to unlock that session. The exact details of what happens when the session receives this unlock signal are undefined and session-specific. However, most sessions will unlock a screensaver in response.

Когда пользователь начинает выход из системы, или 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».

All of these scripts are run with root privilege and return 0 if run successfully, and a non-zero return code if there was any failure that should cause the login session to be aborted. Also note that GDM will block until the scripts finish, so if any of these scripts hang, this will cause the login process to also hang.

When the Xserver for the login GUI has been successfully started, but before the login GUI is actually displayed, GDM will run the `Init` script. This script is useful for starting programs that should be run while the login screen is showing, or for doing any special initialization if required.

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

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

When a user terminates their session, GDM will run the `PostSession` script. Note that the Xserver will have been stopped by the time this script is run, so it should not be accessed.

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

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

### Autostart Configuration

The `<share>/gdm/autostart/LoginWindow` directory contains files in the format specified by the "FreeDesktop.org Desktop Application Autostart Specification". Standard features in the specification may be used to specify programs that should auto-restart or only be launched if a GConf configuration value is set, etc.

Any `.desktop` files in this directory will cause the associated program to automatically start with the login GUI greeter. By default, GDM is shipped with files which will autostart the gdm-simple-greeter login GUI greeter itself, the gnome-power-manager application, the gnome-settings-daemon, and the metacity window manager. These programs are needed for the greeter program to work. In addition, desktop files are provided for starting various AT programs if the configuration values specified in the Accessibility Configuration section below are set.

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

There is also an `Xsession` script located at `<etc>/gdm/Xsession` which is called between the `PreSession` and the `PostSession` scripts. This script does not support per-display like the other scripts. This script is used for actually starting the user session. This script is run as the user, and it will run whatever session was specified by the Desktop session file the user selected to start.

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

The GDM daemon is configured using the `<etc>/gdm/custom.conf` file. Default values are stored in GConf in the `gdm.schemas` file. It is recommended that end-users modify the `<etc>/gdm/custom.conf` file because the schemas file may be overwritten when the user updates their system to have a newer version of GDM.

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

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

The file `<etc>/gdm/custom.conf` supports the "[daemon]", "[security]", and "[xdmcp]" group sections. Within each group, there are particular key/value pairs that can be specified to modify how GDM behaves. For example, to enable timed login and specify the timed login user to be a user named "you", you would modify the file so it contains the following lines:

    [daemon]
    TimedLoginEnable=true
    TimedLogin=you

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

#### [chooser]

Multicast

      Multicast=false

  If true and IPv6 is enabled, the chooser will send a multicast query to the local network and collect responses from the hosts who have joined multicast group.

MulticastAddr

      MulticastAddr=ff02::1

  This is the Link-local multicast address.

#### [daemon]

TimedLoginEnable

      TimedLoginEnable=false

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

TimedLogin

      TimedLogin=

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

  If the value ends with a vertical bar | (the pipe symbol), then GDM will execute the program specified and use whatever value is returned on standard out from the program as the user. The program is run with the DISPLAY environment variable set so that it is possible to specify the user in a per-display fashion. For example if the value is "/usr/bin/getloginuser|", then the program "/usr/bin/getloginuser" will be run to get the user value.

TimedLoginDelay

      TimedLoginDelay=30

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

AutomaticLoginEnable

      AutomaticLoginEnable=false

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

AutomaticLogin

      AutomaticLogin=

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

  If the value ends with a vertical bar | (the pipe symbol), then GDM will execute the program specified and use whatever value is returned on standard out from the program as the user. The program is run with the DISPLAY environment variable set so that it is possible to specify the user in a per-display fashion. For example if the value is "/usr/bin/getloginuser|", then the program "/usr/bin/getloginuser" will be run to get the user value.

User

      User=gdm

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

Group

      Group=gdm

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

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

##### [debug]

Enable

      Enable=false

  To enable debugging, set the debug/Enable key to "true" in the `<etc>/gdm/custom.conf` file and restart GDM. Then debug output will be sent to the system log file (`<var>/log/messages` or `<var>/adm/messages` depending on your Operating System).

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

##### [greeter]

IncludeAll

      IncludeAll=true

  If true, then the face browser will show all users on the local machine. If false, the face browser will only show users who have recently logged in.

  When this key is true, GDM will call fgetpwent() to get a list of local users on the system. Any users with a user id less than 500 (or 100 if running on Oracle Solaris) are filtered out. The Face Browser also will display any users that have previously logged in on the system (for example NIS/LDAP users). It gets this list via calling the `ck-history` ConsoleKit interface. It will also filter out any users which do not have a valid shell (valid shells are any shell that getusershell() returns - /sbin/nologin or /bin/false are considered invalid shells even if getusershell() returns them).

  If false, then GDM more simply only displays users that have previously logged in on the system (local or NIS/LDAP users) by calling the `ck-history` ConsoleKit interface.

Include

      Include=

  Set to a list of users to always include in the Face Browser. This value is set to a list of users separated by commas. By default, the value is empty.

Exclude

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

  Set to a list of users to always exclude in the Face Browser. This value is set to a list of users separated by commas. Note that the setting in the `custom.conf` overrides the default value, so if you wish to add additional users to the list, then you need to set the value to the default value with additional users appended to the list.

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

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

  You should add

      gdm:.my.domain

  to your `<etc>/hosts.allow`, depending on your TCP Wrappers configuration. See the hosts.allow man page for details.

  Внимание! 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

  If the Xserver does not respond in the specified number of seconds, then the connection is stopped and the session ended. When this happens the daemon dies with an ALARM signal. Note that GDM 2.20 and earlier multiplied this setting by 2, so it may be necessary to increase the timeout if upgrading from GDM 2.20 and earlier to a newer version.

  Внимание! Ранее 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)

  If true, then the face browser with known users is not shown in the login window.

/apps/gdm/simple-greeter/logo_icon_name

      computer (string)

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

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

      [] (string list)

  Set to a list of languages to be shown by default in the login window. Default value is "[]". With the default setting only the system default language is shown and the option "Other..." which pops-up a dialog box showing a full list of available languages which the user can select.

  Users are not intended to change this setting by hand. Instead GDM keeps track of any languages selected in this configuration key, and will show them in the language combo box along with the "Other..." choice. This way, commonly selected languages are easier to select.

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

      [] (string list)

  Set to a list of keyboard layouts to be shown by default in the login panel. Default value is "[]". With the default setting only the system default keyboard layout is shown and the option "Other..." which pops-up a dialog box showing a full list of available keyboard layouts which the user can select.

  Users are not intended to change this setting by hand. Instead GDM keeps track of any keyboard layouts selected in this configuration key, and will show them in the keyboard layout combo box along with the "Other..." choice. This way, commonly selected keyboard layouts are easier to select.

/apps/gdm/simple-greeter/wm_use_compiz

      false (boolean)

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

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

This section describes the accessibility configuration options available in GDM.

#### GDM Accessibility Dialog And GConf Keys

The GDM greeter panel at the login screen displays an accessibility icon. Clicking on that icon opens the GDM Accessibility Dialog. In the GDM Accessibility Dialog, there is a list of checkboxes, so the user can enable or disable the associated assistive tools.

The checkboxes that correspond to the on-screen keyboard, screen magnifier and screen reader assistive tools act on the three GConf keys that are described in the next section of this document. By enabling or disabling these checkboxes, the associated GConf key is set to "true" or "false". When the GConf key is set to true, the assistive tools linked to this GConf key are launched. When the GConf key is set to "false", any running assistive tool linked to this GConf key are terminated. These GConf keys are not automatically reset to a default state after the user has logged in. Consequently, the assistive tools that were running during the last GDM login session will automatically be launched at the next GDM login session.

The other checkboxes in the GDM Accessibility Dialog do not have corresponding GConf keys because no additional program is launched to provide the accessibility features that they offer. These other options correspond to accessibility features that are provided by the Xserver, which is always running during the GDM session.

#### Accessibility GConf Keys

GDM offers the following GConf keys to control its accessibility features:

##### GDM Configuration Keys

/desktop/gnome/interface/accessibility

      false (boolean)

  Controls whether the Accessibility infrastructure will be started with the GDM GUI. This is needed for many accessibility technology programs to work.

/desktop/gnome/applications/at/screen_magnifier_enabled

      false (boolean)

  If set, then the assistive tools linked to this GConf key will be started with the GDM GUI program. By default this is a screen magnifier application.

/desktop/gnome/applications/at/screen_keyboard_enabled

      false (boolean)

  If set, then the assistive tools linked to this GConf key will be started with the GDM GUI program. By default this is an on-screen keyboard application.

/desktop/gnome/applications/at/screen_reader_enabled

      false (boolean)

  If set, then the assistive tools linked to this GConf key will be started with the GDM GUI program. By default this is a screen reader application.

#### Linking GConf Keys to Accessibility Tools

For the screen_magnifier_enabled, the screen_keyboard_enabled, and the screen_reader_enabled GConf keys, the assistive tool which gets launched depends on the desktop files located in the GDM autostart directory as described in the "Autostart Configuration" section of this manual. Any desktop file in the GDM autostart directory can be linked to these GConf key via specifying that GConf key in the AutostartCondition value in the desktop file. So the exact AutostartCondition line in the desktop file could be one of the following:

    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

When an accessibility key is true, then any program which is linked to that key in a GDM autostart desktop file will be launched (unless the Hidden key is set to true in that desktop file). A single GConf key can even start multiple assistive tools if there are multiple desktop files with this AutostartCondition in the GDM autostart directory.

#### Example Of Modifying Accessibility Tool Configuration

For example, if GNOME is distributed with GOK as the default on-screen keyboard, then this could be replaced with a different program if desired. To replace GOK with the on-screen keyboard application "onboard" and additionally activate the assistive tool "mousetweaks" for dwelling support, then the following configuration is needed.

Create a desktop file for onboard and a second one for mousetweaks; for example, onboard.desktop and mousetweaks.desktop. These files must be placed in the GDM autostart directory and be in the format as explained in the "Autostart Configuration" section of this document.

The following is an example `onboard.desktop` file:

    [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

The following is an example `mousetweaks.desktop` file:

    [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

Note the line with the AutostartCondition that links both desktop files to the GConf key for the on-screen keyboard.

To disable GOK from starting, the desktop file for the GOK on-screen keyboard must be removed or deactivated. Otherwise onboard and GOK would simultaneously be started. This can be done by removing the gok.desktop file from the GDM autostart directory, or by adding the "Hidden=true" key setting to the gok.desktop file.

After making these changes, GOK will no longer be started when the user activates the on-screen keyboard in the GDM session; but onboard and mousetweaks will instead be launched.

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

Программа приветствия 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.

By default, GDM will install desktop files in the `<share>/xsessions` directory. GDM will search the following directories in this order to find desktop files: `<etc>/X11/sessions/`, `<dmconfdir>/Sessions`, `<share>/xsessions`, and `<share>/gdm/BuiltInSessions`. By default the `<dmconfdir>` is set to `<etc>/dm/` unless GDM is configured to use a different directory via the "--with-dmconfdir" option.

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

GDM desktop files support a GDM-specific extension, a key named "X-GDM-BypassXsession". If the key is not specified in a desktop file, the value defaults to "false". If this key is specified to be "true" in a desktop file, then GDM will launch the program specified by the desktop file "Exec" key directly when starting the user session. It will not run the program via the `<etc>/gdm/Xsession` script, which is the normal behavior. Since bypassing the `<etc>/gdm/Xsession` script avoids setting up the user session with the normal system and user settings, sessions started this way can be useful for debugging problems in the system or user scripts that might be preventing a user from being able to start a session.

### Параметры языка и пользовательских сеансов 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` is the main daemon which sets up graphical login environment and starts necessary helpers.

##### `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, вы можете сообщить об ошибке или написать письмо в лист рассылки (как это сделать описано ранее во введении).

If GDM is failing to work properly, it is always a good idea to include debug information. To enable debugging, set the debug/Enable key to "true" in the `<etc>/gdm/custom.conf` file and restart GDM. Then use GDM to the point where it fails, and debug output will be sent to the system log file (`<var>/log/messages` or `<var>/adm/messages` depending on your Operating System). If you share this output with the GDM community via a bug report or email, please only include the GDM related debug information and not the entire file since it can be large. If you do not see any GDM syslog output, you may need to configure syslog (refer to the syslog man page).

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