Содержание

2.1 Введение

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

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

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

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

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

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

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

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

В состав 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.

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

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 выполняется после инициализации сеанса пользователя.

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

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

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

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

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

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

2.6 Обозреватель изображений пользователей 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, то имена всех пользователей доступны удалённо. Что ухудшает безопасность в том случае, если недоброжелатель не должен догадываться о корректных именах пользователей. Поэтому в некоторых системах с высоким уровнем безопасности использование обозревателя изображений пользователей недопустимо.

2.7 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 обратитесь к разделу «Безопасность».

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

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 — набор случайных символов.

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

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

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