При обсуждении средств поддержки сеанса Kerberos предполагалось, что пользователь уже зарегистрирован в системе. Однако подобный подход крайне неудобен, так как пользователю приходится регистрироваться дважды: один раз в начале работы на компьютере, а второй раз при работе с серверами Kerberos (при запуске программы
kinit
). Решением этой проблемы могло бы быть использование программы, одновременно решающей обе задачи. В составе пакета Kerberos обычно поставляются два подобных инструмента:
login.krb5
и
ksu
. Они предназначены для регистрации пользователя в текстовом режиме. Регистрацию можно было бы организовать и по-другому, модифицировав библиотеки Linux для работы с Kerberos. Такое решение сложнее в реализации, но
обеспечивают большую гибкость.
Внимание
Рекомендуется перед использованием
login.krb5
сначала проверить программу
kinit
для основных учетных записей, в том числе для записи root. Если
kinit
не работает, не будет работать и
login.krb5
, следовательно, вам не удастся зарегистрироваться с консоли в текстовом режиме. Желательно также зарегистрироваться под именем root с одного из виртуальных терминалов. В случае, если у вас возникнут проблему с использованием
login.krb5
, вы сможете изменить конфигурацию программы. Аналогичному подходу необходимо следовать и при работе с другими инструментами регистрации.
Выполнение аутентификации Kerberos в текстовом режиме
Процедура регистрации в системе Linux в текстовом режиме включает использование программы
getty
или одной из ее разновидностей (разновидностями
getty
являются
mingetty
,
mgetty
и
vgetty
). Они запускаются из
/etc/inittab
, контролируют консольный терминал и последовательные порты и передают управление программе
/bin/login
. Программы поддержки некоторых сетевых протоколов, например Telnet, также вызывают
/bin/login
. Как следует из имени
login.krb5
, эта программа создана для замены
/bin/login
. Прежде чем выполнять такую замену, желательно сохранить исходную программу регистрации под другим именем. Например, вы можете использовать следующие команды:
# mv /bin/login /bin/login-original
# cp /usr/kerberos/sbin/login.krb5 /bin/login
Если возникнут проблемы с использованием
login.krb5
, вы всегда сможете восстановить исходную программу
/bin/login
. После замены программы
login
регистрация пользователя на компьютере будет автоматически сопровождаться начальной регистрацией в системе Kerberos. Процедура начальной регистрации включает получение TGT, поэтому после нее нет необходимости в вызове
kinit
. Несмотря на то что описанная конфигурация предполагает наличие записи в файле
/etc/passwd
, рабочего каталога пользователя и прочих ресурсов, необходимых в обычных условиях для нормальной работы на компьютере, в системе будет выполняться только аутентификация Kerberos. Существуют также другие средства регистрации, которые надо модифицировать для работы с Kerberos. К ним относятся регистрация с помощью инструментов с графическим интерфейсом, а также регистрация посредством серверов, которые не используют
/bin/login
, например SSH.
Переход к новой учетной записи после регистрации
При использовании
su
для замены учетной записи в работу включается новый механизм аутентификации. В состав пакета Kerberos входит альтернативный инструмент
ksu
, который принимает решение о переходе к учетной записи другого пользователя и выполняет необходимые действия. Для работы этой программы должны выполняться следующие условия.
• Компьютер, на котором работает
ksu
, должен иметь ярлык (обычно он хранится в файле
/etc/krb5.keytab
).
• Для исполняемого файла
ksu
должен быть установлен признак SUID, так, чтобы программа, запускаемая от имени любого пользователя, выполнялась с правами
root
. Во многих пакетах Kerberos этот признак не установлен, поэтому вам необходимо сделать это самостоятельно (вызвать команду
chmod a+s /usr/kerberos/bin/ksu
).
• Для повышения уровня защиты пользователю, учетной записью которого вы собираетесь воспользоваться, должен соответствовать файл авторизации, в котором указываются права доступа для других пользователей. В роли файла авторизации может выступать
.k5login
или
.k5users
. Особенности создания и использования этих файлов описаны ниже.
Для того чтобы один пользователь мог перейти к учетной записи другого пользователя, целевой пользователь должен создать файл авторизации. Без этого файла
ksu
запросит пароль, который может быть передан по сети в незашифрованном виде (это произойдет, если пользователь регистрировался посредством незащищенного протокола, например Telnet). Файл
.k5login
предоставляет другому пользователю полный набор привилегий. Он состоит из набора строк, в каждой из которых указан принципал Kerberos. Файл
.k5users
предоставляет пользователю ограниченный доступ; в нем указаны списки программ, которые этот пользователь может запускать. Каждая строка файла начинается с идентификатора принципала Kerberos, за которым следуют имена программ, разделенных пробелами. Групповые операции обозначаются с помощью символа
*
. Ниже приведен пример записи, с помощью которой принципалу
minerva@THREEROOMCO.COM
предоставляются права на запуск программ
/bin/ls
и
/usr/bin/zip
.
minerva@THREEROOMCO.COM /bin/ls /usr/bin/zip
После настройки программа
ksu
работает подобно
su
— вы вводите имя программы, затем указываете имя пользователя, привилегии которого вы собираетесь получить. Если файлы
.k5login
и
.k5users
отсутствуют, вам придется ввести пароль для принципала. При наличии файла авторизации вводить пароль не нужно. Такой подход создает меньшую угрозу для безопасности системы, чем взаимодействие по незащищённому протоколу.
Если вы хотите непосредственно выполнить некоторую программу, вы можете сделать это с помощью опции
– е имя_программы
. Например, для того, чтобы запустить
/bin/ls
от имени пользователя
fluffy
, вам надо вызвать команду
fluffy -e /bin/ls
.
Использование РАМ
Замена программ
login
и
su
специальными инструментами, ориентированными на работу с Kerberos, помогает решать задачи аутентификации, но существуют ситуации, в которых подобный подход не приносит желаемых результатов. Особенный интерес вызывают случаи, когда возникает необходимость контролировать процесс регистрации на рабочей станции с помощью программы с графическим интерфейсом и выполнять аутентификацию в системе Kerberos. Существуют также другие локальные средства, выполняющие аутентификацию пользователей, которые необходимо связать с Kerberos; в качестве примеров таких средств можно привести
vlock
и
xscreensaver
(эти инструменты блокируют сеанс взаимодействия, осуществляемый как в текстовом, так и в графическом режиме, до тех пор, пока пользователь не введет пароль). Существуют универсальные инструменты связывания различных программы со средствами Kerberos, но на сегодняшний день эти инструменты нельзя назвать широко распространенными, и они не поставляются в комплекте с Kerberos. Средства для решения данной задачи базируются на поддержке модулей РАМ (Pluggable Authentication Module — встраиваемый модуль аутентификации) в системе Linux.
РАМ выполняет роль посредника между программами, которым требуется аутентификация (например, сервером FTP, программой
login
, инструментами регистрации, работающими в среде X Window), и базами данных, в которых хранится информация о пользователях, в частности пароли (
/etc/passwd
,
/etc/shadow
и другие файлы стандартного пакета Linux). Процедуры аутентификации оформляются в виде отдельной библиотеки. В этом случае файлы, применяемые для аутентификации, могут быть без труда модифицированы, а программы, использующие их, остаются без изменений. Для поддержки нового формата файлов модифицируются только РАМ. В этом смысле реализация средств поддержки Kerberos в виде РАМ является почти идеальным решением, позволяющим обеспечить совместную работу с Kerberos многих приложений. Любые изменения не затрагивают прикладные программы, которые взаимодействуют только с РАМ.