Домен/Скрипты
Программы для управления доменом.
ldap-user-tools
Вспомогательные программы входят в пакет ldap-user-tools. Все программы размещены в каталоге /usr/sbin, поэтому доступны без полного пути администратору. См. Su. Каждый скрипт поддерживает параметры -h и --help для выдаче справки по использованию скрипта и --version для показа версии пакета и сервера LDAP.
Переменные среды окружения
Переменная | Пример | Описание |
---|---|---|
DN_CONF | /etc/openldap/slapd-test.altlinux.ru.conf | Файл с конфигурацией base DN текущего домена |
ENABLE_KRB | yes | Если «yes», дополнительно использовать базу Kerberos для операций |
Переменные заполняются автоматически, если текущий домен настроен и используется для аутентификации. Просмотреть значения переменных можно командами:
. /usr/bin/alterator-openldap-functions
set_ldap_config
echo $DN_CONF
echo $ENABLE_KRB
Совет: При указании значения переменной DN_CONF перед запуском скриптов ldap-* можно переназначить работу с доменом LDAP, отличным от используемого для аутентификации.
Примечание: переменная DN_CONF заполняется из вывода текущей схемы аутентификации
system-auth status
значение переменной ENABLE_KRB выставляется в «yes», если в файле /etc/sysconfig/system есть значение SERVER_ROLE=master.
Утилиты
ldap-init
Инициализирует базовый DN текущего домена, создаёт подразделы. Явно не используется.
ldap-dn
Управление базовыми DN.
ldap-getent
Получение записей о пользователях и группах домена в формате getent(1).
ldap-useradd
Добавление пользователя в домен.
Использование:
ldap-useradd [-n <Имя>] [-f <Фамилия>] [-c <ФИО полностью>] [-d <домашний каталог>] [-s <интерпретатор>] [-p <пароль>] [-G <группа[,...]] <имя пользователя>
Параметры:
- -n <Имя>
- имя пользователя
- -f <Фамилия>
- фамилия пользователя
- -с <ФИО полностью>
- полные фамилия имя отчество пользователя.
- Примечание: Так как отдельного поля для отчества в штатной схеме LDAP нет, было решено добавить его в поле cn. При обработке оно смотрит на содержимое фамилии и имени, убирает их из cn и получает отчество. Поэтому для определения отчества указывайте их с фамилией и именем в параметре -c.
- -d <домашний каталог>
- домашний каталог пользователя на сервере. По умолчанию: /home/<имя пользователя>
- -s <интерпретатор>
- интерпретатор команд. По умолчанию: /bin/bash. Если указать /sbin/nologin или /dev/null, пользователь не сможет войти по SSH на сервер.
- -p <пароль>
- пароль пользователя. Пароль можно установить позднее командой ldap-passwd.
- -G <группа,...>
- По умолчанию в LDAP создаётся и одноимённая с пользователем группа. Параметр -G предназначен для включения нового пользователя в уже созданные группы LDAP (группы указываются через запятую).
- <имя пользователя>
- имя пользователя. Единственный обязательный параметр.
Пример:
ldap-useradd -f Филиппов -n Иван -c 'Филиппов Иван Дмитриевич' -d /home/fill -s /bin/bash -p pASSWORD -G g1,group2 fill
ldap-userdel
Удаление пользователя из домена.
Использование:
ldap-userdel <имя пользователя>
Параметры:
- <имя пользователя>
- имя пользователя. Единственный обязательный параметр.
Пример:
ldap-userdel fill
ldap-usermod
Изменение данных о пользователе домена.
ldap-passwd
Изменение пароля пользователя домена.
ldap-groupadd
Добавление группы в домен.
ldap-groupdel
Удаление группы из домена.
ldap-groupmod
Изменение данных о составе группы домена.
alterator-cmdline
Все методы бэкендов модулей Alterator можно вызвать через команду alterator-cmdline. Ниже представлены полезные команды:
alterator-net-domain (Домен)
Просмотр текущего состояния домена
# alterator-cmdline /net-domain action read domain:test.altlinux.ru resolver:OK access:OK ldap:OK kdc:OK smb:OK dhcpd:OK master:#t
system-auth
Утилита system-auth входит в пакет alterator-auth и позволяет просматривать и устанавливать текущую схему аутентификации.
Использование:
system-auth <действие> [<дополнительно>]
Действия:
list
Cписок поддерживаемых схем аутентификации. Пример:
# system-auth list local ldap krb5
status
Текущая схема аутентификации и её параметры. Пример на сервере:
# system-auth status ldap dc=test,dc=altlinux,dc=ru ldap://127.0.0.1
Пример на клиенте:
# system-auth status krb5 dc=test,dc=altlinux,dc=ru ldaps://ldap.test.altlinux.ru
write
Изменить схему аутентификации
Использовать локальную базу tcb:
# system-auth write local
Использовать аутентификацию в LDAP без Kerberos:
# system-auth write ldap dc=test,dc=altlinux,dc=ru ldap://127.0.0.1
Использовать аутентификацию в LDAP c Kerberos:
# system-auth write krb5 dc=test,dc=altlinux,dc=ru ldaps://ldap.test.altlinux.ru
Примечания
# control system-auth krb5
- Параметры аутентификации через LDAP находятся при использовании nss_ldap в файлах /etc/pam_ldap.conf и /etc/nss_ldap.conf, при использовании nss-ldapd — в файле /etc/nslcd.conf (при этом обязательно должна быть запущена служба nslcd).
- База имён пользователей (NSS) находится в файле /etc/nsswitch.conf
Диагностика
Если что-то не работает, алгоритм следующий:
1. Проверяем на сервере домен и то, что он использует Kerberos:
# alterator-cmdline /net-domain action read domain:test.altlinux.ru resolver:OK access:OK ldap:OK kdc:OK smb:OK dhcpd:OK master:#t
Все параметры (кроме domain и master) должны быть OK, domain содержит правильное имя домена, master — значение #t.
2. Проверяем схему аутентификации на клиенте:
# system-status krb5 dc=test,dc=altlinux,dc=ru ldaps://ldap.test.altlinux.ru
Схема — krb5, выбран правильный домен. Примечание: на сервере используется схема ldap.
3. Смотрим доступность сервера по имени:
# ping ldap.test.altlinux.ru
а) Если пишет 'unknown host', проверьте, прописан ли сервер как сервер DNS для этой машины. Рекомендуется сервер домена использовать как сервер DHCP и DNS для обслуживаемой подсети.
б) Если ping не идёт, проверьте сетевые подключения клиента и сервера и маршрутизацию сети.
4. Проверьте время на клиенте и сервере командой
# date
Оно не должно сильно отличаться. Kerberos очень чувствителен к разнице во времени.
5. Проверьте, виден ли клиент в LDAP:
# ldapsearch -LLL -b "dc=test,dc=altlinux,dc=ru" -x -H "ldaps://ldap.test.altlinux.ru" "(&(objectClass=posixAccount)(uid=fill))" dn: uid=fill,ou=People,dc=test,dc=altlinux,dc=ru uid: fill cn:: 0KTQuNC70LjQv9C/0L7QsiDQmNCy0LDQvSDQlNC80LjRgtGA0LjQtdCy0LjRhw== sn:: 0KTQuNC70LjQv9C/0L7Qsg== objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: sambaSamAccount loginShell: /bin/sh uidNumber: 5006 gidNumber: 5009 homeDirectory: /home/fil sambaAcctFlags: [U ] sambaSID: S-1-5-21-2552966934-293145977-2108249345-11012 sambaPwdLastSet: 2147483647 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 0 givenName:: 0JjQstCw0L0=
6. Проверьте, видим ли пользователь через NSS на клиентской машине:
# getent passwd fill fill:*:5006:5009:Филиппов Иван Дмитриевич:/home/fil:/bin/sh
Если ничего не выдано, проверяйте имя домена и работу службы LDAP (slapd) на сервере.