Домен/Скрипты: различия между версиями

Материал из ALT Linux Wiki
Строка 121: Строка 121:
===ldap-getent===
===ldap-getent===
Получение записей о пользователях и группах домена в формате getent(1).
Получение записей о пользователях и группах домена в формате getent(1).
Использование:
ldap-getent <класс> [<имя>] [<поле>[,...]]
Параметры:
;<класс>
:возможные значения: '''passwd''' (пользователи) и '''group''' (группы).
;<имя>
:имя пользователя или группы. Если опущено, показываются все объекты.
;<поле>
:список полей LDAP, которые нужно показать вместо обычного вывода в формате getent(1) (значения разделены двоеточием, пароли не показываются):
:Для пользователей: <pre>uid:userPassword:uidNumber:gidNumber:gecos:homeDirectory:loginShell</pre>
:Для групп: <pre>cn:userPassword:gidNumber:memberUid</pre>
Примечания:
* Регистр указываемых полей несущественен.
* Если объект содержит несколько записей с одинаковым полем (например, memberUid в группах), значения будут показаны через запятую.
Поддерживаемые поля LDAP (служебные поля опущены):
{|class="standard"
!Режим
!Описание
|-
|colspan="2"|'''Пользователи'''
|-
|{{term|uid}}||Имя заводимого пользователя в системе
|-
|{{term|givenName}}||Имя
|-
|{{term|sn}}||Фамилия
|-
|{{term|cn}}||Фамилия Имя Отчество
|-
|{{term|loginShell}}||Интерпретатор команд
|-
|{{term|uidNumber}}||Идентификатор пользователя
|-
|{{term|gidNumber}}||Идентификатор группы
|-
|{{term|homeDirectory}}||Домашний каталог
|-
|{{term|mail}}||Адрес электронной почты
|-
|{{term|ou}}||Подразделение
|-
|{{term|title}}||Должность
|-
|{{term|telephoneNumber}}||Телефон
|-
|{{term|mobile}}||Мобильный
|-
|{{term|departmentNumber}}||Отдел
|-
|{{term|postalAddress}}||Адрес
|-
|colspan="2"|'''Группы'''
|-
|{{term|cn}}||Название
|-
|{{term|gidNumber}}||Идентификатор группы
|-
|{{term|memberUid}}||Имя члена группы
|-
|}
Примеры:
Показать всех пользователей:<pre># 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</pre>
Показать состав группы admins: <pre># ldap-getent group admins memberuid
l1,user,ivanov</pre>


===ldap-useradd===
===ldap-useradd===

Версия от 12:17, 8 октября 2012

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

Программа Пакет Назначение
ldap-init ldap-user-tools Инициализирует базовый DN текущего домена, создаёт подразделы
ldap-dn ldap-user-tools Управление базовыми DN
ldap-getent ldap-user-tools Получение записей о пользователях и группах домена в формате getent(1)
ldap-useradd ldap-user-tools Добавление пользователя в домен
ldap-userdel ldap-user-tools Удаление пользователя из домена
ldap-usermod ldap-user-tools Изменение данных о пользователе домена
ldap-passwd ldap-user-tools Изменение пароля пользователя домена
ldap-groupadd ldap-user-tools Добавление группы в домен
ldap-groupdel ldap-user-tools Удаление группы из домена
ldap-groupmod ldap-user-tools Изменение данных о составе группы домена
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 (группы).
<имя>
имя пользователя или группы. Если опущено, показываются все объекты.
<поле>
список полей LDAP, которые нужно показать вместо обычного вывода в формате getent(1) (значения разделены двоеточием, пароли не показываются):
Для пользователей:
uid:userPassword:uidNumber:gidNumber:gecos:homeDirectory:loginShell
Для групп:
cn:userPassword:gidNumber:memberUid

Примечания:

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

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

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


Примеры:

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

# 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 <группа[,...]] <имя пользователя>

Параметры:

-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 [-r] <имя пользователя>

Параметры:

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

Пример:

ldap-userdel -r fill

ldap-usermod

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


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

Примечания

  1. Собственно выбором схемы аутентификации для PAM занимается control system-auth:
# control system-auth
krb5
  1. Параметры аутентификации через LDAP находятся при использовании nss_ldap в файлах /etc/pam_ldap.conf и /etc/nss_ldap.conf, при использовании nss-ldapd ­— в файле /etc/nslcd.conf (при этом обязательно должна быть запущена служба nslcd).
  2. База имён пользователей (NSS) находится в файле /etc/nsswitch.conf