Домен/Скрипты

Материал из ALT Linux Wiki

Программы для управления доменом.

Программа Пакет Назначение
ldap-init ldap-user-tools Инициализирует базовый DN текущего домена, создаёт подразделы
ldap-dn Управление базовыми DN
ldap-getent Получение записей о пользователях и группах домена в формате getent(1)
ldap-useradd Добавление пользователя в домен
ldap-userdel Удаление пользователя из домена
ldap-usermod Изменение данных о пользователе домена
ldap-passwd Изменение пароля пользователя домена
ldap-groupadd Добавление группы в домен
ldap-groupdel Удаление группы из домена
ldap-groupmod Изменение данных о составе группы домена
alterator-cmdline alterator Вызов методов бэкендов модулей Alterator
system-auth alterator-auth Просмотр и устанавка текущей схемы аутентификации


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-dn <команда> [<базовый DN>]

Параметры:

<команда>
команда на изменение:
Режим Описание
list Список доступных базовых DN
create Создать базовый DN
delete Удалить базовый DN
find Показ файла конфигурации базового DN
master Установить как базовый DN по умолчанию
<базовый DN>
базовый DN домена.

Команды list и find выводят записи в виде <базовый DN> <файл конфигурации>

Примеры:

Список базовых DN:

# ldap-dn list
dc=test,dc=altlinux,dc=ru /etc/openldap/slapd-test.altlinux.ru.conf

Создание базового DN:

# ldap-dn create dc=school-100
hdb_monitor_db_open: monitoring disabled; configure monitor database to enable
_#################### 100.00% eta   none elapsed            none fast!         
Closing DB...

Показ файла конфигурации:

# ldap-dn find dc=school-100
/etc/openldap/slapd-school-100.conf

Установка базового DN по умолчанию:

# ldap-dn master dc=test,dc=altlinux,dc=ru

Удаление базового DN:

# ldap-dn delete dc=school-100

ldap-getent

Получение записей о пользователях и группах домена в формате getent(1).

Использование:

ldap-getent <класс> [<имя>] [<поле>[,...]]

Параметры:

<класс>
возможные значения: passwd (пользователи), group (группы), ws (зарегистрированные рабочие станции)  с версии 0.8.0 
<имя>
имя пользователя, группы или рабочей станции. Если опущено, показываются все объекты.
<поле>
список полей LDAP, которые нужно показать вместо обычного вывода в формате getent(1) (значения разделены двоеточием, пароли не показываются):
Для пользователей:
uid:userPassword:uidNumber:gidNumber:gecos:homeDirectory:loginShell
Для групп:
cn:userPassword:gidNumber:memberUid
Для рабочих станций
uidNumber

Примечания:

  • Регистр указываемых полей несущественен.
  • Если объект содержит несколько записей с одинаковым полем (например, memberUid в группах), значения будут показаны через запятую.

Поддерживаемые поля LDAP (служебные поля опущены):

Режим Описание
Пользователи
uid Имя заводимого пользователя в системе
givenName Имя
sn Фамилия
cn Фамилия Имя Отчество
loginShell Интерпретатор команд
uidNumber Идентификатор пользователя
gidNumber Идентификатор группы
homeDirectory Домашний каталог
mail Адрес электронной почты
ou Подразделение
title Должность
telephoneNumber Телефон
mobile Мобильный
departmentNumber Отдел
postalAddress Адрес
Группы
cn Название
gidNumber Идентификатор группы
memberUid Имя члена группы
Рабочие станции  с версии 0.8.0 
uid Имя компьютера (доверенные с символом $ на конце)
uidNumber Идентификатор рабочей станции


Примеры:

Показать всех пользователей:

# ldap-getent passwd 
l1::5000:5000::/home/l1:/bin/bash
user::5001:5001::/home/user:/bin/bash
ivanov::5002:5002::/home/ivanov:/bin/bash
l2::5003:5005::/home/l2:/bin/bash
iv::5005:5008::/home/iv:/bin/bash
fill::5006:5009::/home/fil:/bin/sh

Показать состав группы admins:

# ldap-getent group admins memberuid
l1,user,ivanov

ldap-useradd

Добавление пользователя или рабочей станции в домен.

Использование:

ldap-useradd [-n <Имя>] [-f <Фамилия>] [-c <ФИО полностью>]
      [-d <домашний каталог>] [-s <интерпретатор>] [-p <пароль>]
      [-G <группа[,...]] [-w] [-i] <имя пользователя>

Параметры:

-n <Имя>
имя пользователя
-f <Фамилия>
фамилия пользователя
-с <ФИО полностью>
полные фамилия имя отчество пользователя.
Примечание: Так как отдельного поля для отчества в штатной схеме LDAP нет, было решено добавить его в поле cn. При обработке оно смотрит на содержимое фамилии и имени, убирает их из cn и получает отчество. Поэтому для определения отчества указывайте их с фамилией и именем в параметре -c.
-d <домашний каталог>
домашний каталог пользователя на сервере. По умолчанию: /home/<имя пользователя>
-s <интерпретатор>
интерпретатор команд. По умолчанию: /bin/bash. Если указать /sbin/nologin или /dev/null, пользователь не сможет войти по SSH на сервер.
-p <пароль>
пароль пользователя. Пароль можно установить позднее командой ldap-passwd.
-G <группа,...>
По умолчанию в LDAP создаётся и одноимённая с пользователем группа. Параметр -G предназначен для включения нового пользователя в уже созданные группы LDAP (группы указываются через запятую).
-w  с версии 0.8.0 
Создать не пользователя, а рабочую станцию
-i  с версии 0.8.0 
Рабочая станция (необходимо также указание ключа -w) является доверенной. Даже если не указан символ $ в конце имени рабочей станции, он добавляется автоматически.
<имя пользователя>
имя пользователя или рабочей станции. Единственный обязательный параметр.

Пример:

ldap-useradd -f Филиппов -n Иван -c 'Филиппов Иван Дмитриевич' -d /home/fill -s /bin/bash -p pASSWORD -G g1,group2 fill

ldap-userdel

Удаление пользователя или рабочей станции из домена.

Использование:

ldap-userdel [-r] [-w] <имя пользователя>

Параметры:

-r
удалить домашний каталог пользователя и его почтовый ящик
-w  с версии 0.8.0 
удалить не пользователя, а рабочую станцию
<имя пользователя>
имя пользователя или рабочей станции. Единственный обязательный параметр.

Пример:

ldap-userdel -r fill

ldap-usermod

Изменение данных о пользователе домена.

Использование:

ldap-usermod [-g <группа> |<режим>] <имя пользователя>

Параметры:

-g <группа>  с версии 0.8.1 
установить основную группу у пользователя
<режим>
режим изменений.
Режим Описание
add Добавляет поле записи пользователя
replace Изменяет значения полей (изменяются только переданные поля)
del Удаляет поле записи пользователя
<имя пользователя>
имя пользователя домена.

При указании параметра -g режим указывать не нужно.

Добавляемые или удаляемые поля передаются через стандартный поток ввода в виде <имя поля>:<значение>. Имя поля нечувствительно к регистру. Список поддерживаемых полей смотрите в описании ldap-getent.

Пример:

echo "mail:sidorov@domain.ru" | ldap-usermod add sid

ldap-passwd

Изменение пароля пользователя домена.

Использование:

ldap-passwd <имя пользователя> [<пароль>]

Параметры:

<имя пользователя>
имя существующего пользователя домена
<пароль>
новый пароль. Если параметр не указан, пароль считывается из стандартного потока ввода.

Пример:

ldap-passwd fill NewPaSsWoRD

ldap-groupadd

Добавление группы в домен.

Использование:

ldap-groupadd <имя группы>

Параметры:

<имя группы>
имя новой группы домена.

Пример:

ldap-groupadd staff

ldap-groupdel

Удаление группы из домена.

Использование:

ldap-groupdel <имя группы>

Параметры:

<имя группы>
имя группы домена.

Пример:

ldap-groupdel staff

ldap-groupmod

Изменение данных о составе группы домена.

Использование:

ldap-groupmod <режим> <имя группы>

Параметры:

<режим>
режим изменений.
Режим Описание
add Добавляет пользователей в группу
replace Изменяет состав группы (удаляет всех пользователей и заводит новый состав)
del Удаляет пользователей из группы
<имя группы>
имя группы домена.

Добавляемые или удаляемые поля передаются через стандартный поток ввода в виде memberUid:<имя пользователя>

Пример:

Добавить пользователя fill в группу staff

echo 'memberUid:fill' | ldap-groupmod add staff

Удалить пользователя fill из группы staff

echo 'memberUid:fill' | ldap-groupmod del staff

Примечение: посмотреть список пользователей в группе можно командой

ldap-getent group <имя группы>

Пример:

# ldap-getent group staff memberUid
fill,l1

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