Настройка и работа в Linux
adb5321d

"Первый способ"


Если у вас используется первый способ - перечислением необходимых компонентов (keycodes, types, compat, symbols, geometry).

Просто скопируем из файла XF86Config все инструкции типа Xkb**** из секции "Keyboard" в наш файл. И слегка подправим.
Например, у вас там написано

XkbKeycodes "xfree86" XkbTypes "default" XkbCompat "default" XkbSymbols "us(pc104)+ru" XkbGeometry "pc(pc104)"

Надо -

  • во всех строчках заменить префикс Xkb на Xkb_ ("case" букв менять не обязательно),
  • вставить в каждую строчку инструкцию include,
  • получившиеся инструкции include "..." взять в фигурные скобки и закончить знаком ";",
  • и, наконец, добавить "обрамление" - xkb_keymap { .... }; .

Должно получится

xkb_keymap { Xkb_Keycodes { include "xfree86" }; Xkb_Types { include "default" }; Xkb_Compat { include "default" }; Xkb_Symbols { include "us(pc104)+ru" }; Xkb_Geometry { include "pc(pc104)" }; };

Это и есть полное описание настройки XKB. Которое можно загружать в X-сервер, программой xkbcomp.

Все наши добавки мы можем "приплюсовывать" в соответствующие строчки этого описания.


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

XkbKeycodes "xfree86" XkbTypes "default" XkbCompat "default" XkbSymbols "us(pc104)" XkbGeometry "pc(pc104)"

Как легко догадаться, это означает, что

  • описание keycodes берется из файла "xfree86" в директории {XKBROOT}/keycodes, причем из файла будет выбран тот блок, который помечен в нем флагом default;
  • описание types берется из файла "default" в директории {XKBROOT}/types;
  • описание compat берется из файла "default" в директории {XKBROOT}/compat;
  • описание symbols берется из файла "us" в директории {XKBROOT}/symbols, блок "pc104";
  • описание geometry берется из файла "pc" в директории {XKBROOT}/geometry, блок "pc104";

Надо заметить, что в любом блоке (в любых компонентах) может встретиться инструкция

include "имя_файла(имя_блока)" (естественно, имя_блока может отсутствовать)

что, как нетрудно догадаться, означает, что в текущий блок должно быть вставлено другое описание из указанного файла (указанного блока).

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




Этот способ (пожалуй, наиболее "цивилизованный") заключается в том, что в учетную карточку надо вписать"Account expiration time" (с помощью программы chpass), естественно, поставив там уже прошедшую дату. В этом случае, юзер как бы существует в системе - письма к нему идут, файлы сохраняются, во всех диагностиках, где может встретиться его имя, оно отображается правильно. Но, в то же время, если юзер попытается войти в систему, ему просто выдастся сообщение, что "ваш account истек".

Однако, это способ тоже не лишен недостатков. Чтобы понять - почему, надо рассмотреть подробнее, что значит "доступ в систему" юзера.

Обычный юзер может войти в систему (и пользоваться ее ресурсами) через терминал или по сети, с помощью telnet. При этом должна проработать программа login (которая проверит имя и пароль юзера и, если все правильно, запустит для него Shell). Эта же программа обычно вызывается для тех, кто заходит через модем и устанавливает IP соединение по модемной линии (PPP или SLIP). (Кстати, login'у можно запретить пропускать юзера, если прописать правильную строчку (запрещающую вход конкретному юзеру) в файле /etc/login.access. Как это правильно сделать, можно посмотреть в man login.access). Но, кроме того, юзер может (если, конечно, ваша система предоставляет такой сервис):

  • иметь доступ к своим файлам через FTP, тогда проверкой имени/пароля занимается ftpd (программа-сервер FTP);
  • читать свою почту через POP-сервер, тогда проверкой имени/пароля занимается программа popper;
  • иметь доступ к своей домашней директории через сервер "samba", тогда проверкой имени/пароля занимается программа smbd;
  • пользоваться RPC-сервисами - "удаленным запуском программ" (rlogin, rsh

    и т.п.), тогда проверкой имени/пароля занимаются соответствующие демоны (rlogind, rshd и т.д.);

Так вот. Проблема в том, что не все перечисленные демоны (программы-серверы), ответственные за допуск юзера к ресурсам, могут обращать внимание на "Account expiration time". И, следовательно, все равно дадут юзеру возможность воспользоваться своими услугами.



Содержание раздела