Smbldap-tools это набор скриптов на Perl для управления пользователями и группами домена Samba в каталоге LDAP.
Его могут использовать администраторы и пользователи Linux:
useradd
и groupmod
;https://gna.org/projects/smbldap-tools/
За основу этой статьи взят материал из источника: J.erome Tournier - Smbldap-tools. Руководство пользователя (Перевод Тренин Сергей, аkа greyzy Версия : 1.7, от 22 апреля, 2008).
Оригинал на английском языке: Smbldap-tools User Manual (Release: 0.9.3 ) Jérôme Tournier (Revision: 1.7 , generated April 22, 2008), он взят из пакета smbldap-tools (0.9.9-1)
apt-get install smbldap-tools
Рекомендуемый порядок настройки:
Вы можете сделать начальную структуру LDAP каталога, используя скрипт smbldap-populate. Чтобы сделать это, проверьте, что учетная запись, описанная в файле smbldap_bind.conf, которая имеет полномочия для связи с первичный LDAP сервером, так же является административной учетной записью вашего LDAP каталога.
Ключи, которые могут быть использованы при запуске скрипта представлены в таблице:
Ключ | Описание действия ключа | Значение по умолчанию |
---|---|---|
-u uidNumber | первый uidNumber, который будет назначен | 1000 |
-g gidNumber | первый gidNumber, который будет назначен | 1000 |
-a user | Логин администратора | Administrator |
-b user | Логин гостя | nobody |
-e file | Экспорт файла инициализации | |
-i file | Импорт файла инициализации |
В большинстве случаев для построения структуры LDAP каталога достаточно выполнить команду:
smbldap-populate Using builtin directory structure Using the smbldap-tools scripts Revision : 1.7 adding new entry: dc=idealx,dc=com adding new entry: ou=Users,dc=idealx,dc=com adding new entry: ou=Groups,dc=idealx,dc=com adding new entry: ou=Computers,dc=idealx,dc=com adding new entry: ou=Idmap,dc=idealx,dc=org adding new entry: cn=NextFreeUnixId,dc=idealx,dc=org adding new entry: uid=Administrator,ou=Users,dc=idealx,dc=com adding new entry: uid=nobody,ou=Users,dc=idealx,dc=com adding new entry: cn=Domain Admins,ou=Groups,dc=idealx,dc=com adding new entry: cn=Domain Users,ou=Groups,dc=idealx,dc=com adding new entry: cn=Domain Guests,ou=Groups,dc=idealx,dc=com adding new entry: cn=Print Operators,ou=Groups,dc=idealx,dc=com adding new entry: cn=Backup Operators,ou=Groups,dc=idealx,dc=com adding new entry: cn=Replicator,ou=Groups,dc=idealx,dc=com adding new entry: cn=Domain Computers,ou=Groups,dc=idealx,dc=com
После этого шага, если вы больше не хотите использовать учетную запись cn=Manager,dc=idealx,dc=com
, вы можете создать специальную учетную запись для Samba и smbldap-tools
. Для подробностей см. Изменение административной учетной записи.
Строка cn=NextFreeUnixId,dc=idealx,dc=org
используется только для присвоения номеров uidNumber
и gidNumber
при создании новых пользователей и групп. По умолчанию нумерация (см. таб. 1) начинается с номера 1000. Для изменения этого числа используются ключи –u
и –g
. Например, если вы хотите, чтобы нумерация начиналась с числа 1500, при создании структуры каталога используйте такую команду:
smbldap-populate -u 1500 -g 1500
Изменение административной учетной записи (ldap admin dn в файле smb.conf)
Если вы больше не хотите использовать учетную запись, описанную атрибутами cn=Manager,dc=idealx,dc=com, вы можете создать специальную учетную запись для сервера Samba и набора скриптов smbldap-tools. Чтобы сделать это, заведем пользователя с именем, например samba при помощи следующей команды (для подробностей в синтаксисе данной команды обратитесь к п. 4.2.1):
smbldap-useradd -s /bin/false -d /dev/null -P samba
После ввода этой команды вам будет предложено ввести пароль для создаваемого пользователя, в нашем примере он тоже будет samba.
После этого измените соответствующим образом файл
slaveDN="uid=samba,ou=Users,dc=idealx,dc=com" slavePw="samba" masterDN="uid=samba,ou=Users,dc=idealx,dc=com" masterPw="samba"
ldap admin dn = uid=samba,ou=Users,dc=idealx,dc=com
Не забудьте после этого записать пароль в файл secrets.tdb:
smbpasswd -w samba
в файле /etc/openldap/slapd.conf вам стоит добавить полномочий пользователю samba
Переменные заданные в этом файле доступны для просмотра всем.
chmod 644 /etc/smbldap-tools/smbldap.conf
Идентификатор домена.
SID="S-1-5-21-3703471949-3718591838-2324585696"
Можно получить SID, используя команду (сервер Samba при этом должен быть запущен):
net getlocalsid
Имя домена Samba
Адрес основного LDAP сервера
masterLDAP="127.0.0.1"
Порт основного LDAP сервера
masterPort="389"
Адрес подчинённого LDAP сервера, нужно указать DNS имя или IP адрес
slaveLDAP="127.0.0.1"
Порт подчинённого LDAP сервера
slavePort="389"
Указание на использование TLS соединение для связи с LDAP серверами
ldapTLS="1"
Тип проверки сертификата (none, optional, require).
verify="require"
Подробнее см. Net::LDAP, секция start tls section
Файл формата PEM
, включающий сертификат для CA
которым будут доверять LDAP серверы.
cafile="/etc/smbldap-tools/ca.pem"
Файл, содержащий клиентский сертификат.
clientcert="/etc/smbldap-tools/smbldap-tools.iallanis.com.pem"
Файл, содержащий приватный ключ, который соответствует клиентскому сертификату.
clientkey="/etc/smbldap-tools/smbldap-tools.iallanis.com.key"
Корень в БД LDAP
suffix="dc=idealx,dc=com"
Ветвь с записями о пользователях, эта ветвь не связана со значением suffix
.
usersdn="ou=Users,${suffix}"
Ветвь с записями о компьютерах, эта ветвь не связана со значением suffix
.
computersdn="ou=Computers,${suffix}"
Ветвь с записями о группах, эта ветвь не связана со значением suffix
.
groupsdn="ou=Groups,${suffix}"
Ветвь с записями Idmap (используется, если сервер Samba является членом домена), эта ветвь не связана со значением suffix
.
idmapdn="ou=Idmap,${suffix}"
Параметр, описывающий где хранятся следующие свободные uidNumber
и gidNumber
, эта ветвь не связана со значением suffix
.
sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
Область поиска.
scope="sub"
Способ хэширования паролей пользователей
hash encrypt="SSHA"
Этот параметр используется для хранения паролей unix и связан с параметром userPassword
crypt salt format="%s"
Если у параметра hash encrypt
установлено значение CRYPT
, вы можете установить тип шифрования salt
По умолчанию используется значение %s
, но большинство систем способны генерировать пароль с хэшированием MD5
, если вы установите $1$%.8s
Это не обязательный параметр.
Оболочка пользователя по умолчанию.
userLoginShell="/bin/bash"
Значение хранится в атрибуте loginShell
Путь к домашней папке пользователя.
userHome="/home/%U"
Значение хранится в атрибуте homeDirectory
Описание учётной записи пользователя unix
userGecos="System User"
по умолчанию основная группа для учётных записей пользователей.
defaultUserGid="513"
Значение хранится в атрибуте gidNumber
по умолчанию основная группа для компьютеров
defaultComputerGid="550"
Значение хранится в атрибуте gidNumber
место, где находится «скелетная» директория, являющаяся шаблоном для директорий пользователей.
skeletonDir="/etc/skel"
Этот параметр используется лишь в том случае, если вы явно укажете домашнюю папку пользователя в ходе создания нового пользователя.
Параметр задаёт, через какое время (в днях) должен быть изменён пароль пользователя
defaultMaxPassword="55"
Общий ресурс Samba для хранения профилей пользователей
userProfile="\\PDC-SMB3\profiles\%U"
Значение хранится в атрибуте sambaProfilePath
Буква диска, использующаяся в Windows для назначения домашней папки.
userHomeDrive="K:"
по умолчанию имя скрипта, использующегося при входе пользователя в систему.
Если не определено, автоматически будет использоваться скрипт username.cmd
userScript="%U"
значение хранится в атрибуте sambaProfilePath
Домен, добавляемый к атрибуту пользователя mail
.
mailDomain="idealx.org"
Параметр, устанавливающий, будет ли использоваться команда smbpasswd
для установки пароля пользователя Samba (вместо утилиты mkntpwd
).
with smbpasswd="0"
значение может быть 0 или 1.
Путь, по которому находится программа smbpasswd
.
smbpasswd="/usr/bin/smbpasswd"
Параметр, устанавливающий, будет ли использоваться команда slappasswd
для установки пароля пользователя Unix (вместо утилиты Crypt:: librairies
)
with smbpasswd="0"
Значение может быть 0 или 1.
Путь, по которому находится slappasswd
.
smbpasswd="/usr/sbin/slappasswd"
Этот файл должен быть доступен для просмотра только суперпользователю. Файл используется при модификации базы данных LDAP каталога, он включает имя пользователя и его пароль, который имеет право подключаться к первичному и вторичному LDAP каталогу.
chmod 600 /etc/smbldap-tools/smbldap_bind.conf
Отличительное имя, используемое для связи с вторичным сервером LDAP
Пример 1
slaveDN="cn=Manager,dc=idealx,dc=com"
Пример 2:
slaveDN=""
Это может быть административная учетная запись каталога или другая учетная запись LDAP, которая имеет достаточные права для чтения всего каталога (база данных вторичного сервера используется только для чтения). Анонимные подключения подключаются, как показано в примере 2.
Пароль для доступа к вторичному серверу LDAP. Пример 1:
slavePw="secret"
Пример 2:
slavePw=""
Пароль должен быть записан в незашифрованном виде. Файл должен быть доступен для чтения только суперпользователю root
! Анонимные подключения настраиваются по примеру 2.
Отличительное имя, используемое для связи с первичным сервером LDAP
masterDN="cn=Manager,dc=idealx,dc=com"
это может быть административная учётная запись каталога или другая учётная запись LDAP, который имеет достаточные права для внесения изменений в базу данных LDAP. Анонимный доступ к первичному серверу не допускается.
Пароль пользователя с административными полномочиями
masterPw="secret"
пароль должен быть записан в незашифрованном виде. Еще раз убедитесь, что доступ к файлу не имеют те, кто его не должен иметь.
# $Id: smbldap_bind.conf 35 2011-02-23 09:07:36Z fumiyas $ # ############################ # Credential Configuration # ############################ # Notes: you can specify two differents configuration if you use a # master ldap for writing access and a slave ldap server for reading access # By default, we will use the same DN (so it will work for standard Samba # release) slaveDN="cn=Manager,dc=example,dc=com" slavePw="secret" masterDN="cn=Manager,dc=example,dc=com" masterPw="secret"
Настройка Samba
Это позволит администраторам добавлять, удалять или изменять группы и учетные записи пользователей операционной системы MS Windows, используя для этого, например, Диспетчер пользователей
.
[global] #ldap delete dn = Yes add user script = /usr/sbin/smbldap-useradd -m '%u' -t 1 rename user script = /usr/sbin/smbldap-usermod -r '%unew' '%uold' delete user script = /usr/sbin/smbldap-userdel '%u' set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u' add group script = /usr/sbin/smbldap-groupadd -p '%g' delete group script = /usr/sbin/smbldap-groupdel '%g' add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g' delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g' add machine script = /usr/sbin/smbldap-useradd -W '%u'
Добавление пользователей
Для добавления пользователей используется скрипт smbldap-useradd
. Ключи, которые могут быть использованы при его запуске, представлены в таблице.
Пояснение: в четвертой колонке есть строки со значениями, которые начинаются с символа $
. Значения таких ключей, если не назначены специально, берутся из файла smbldap.conf (с указанием секции этого файла).
Ключ | Описание действия ключа | Пример | Значение по умолчанию |
---|---|---|---|
-a | Создать учетную запись Windows, без ключа будет создан Posix-аккаунт | ||
-w | Создать учетную запись рабочей станции Windows | ||
-i | Создать учетную запись пользователя домена, с которым установлено доверие, подробности см. Добавление пользователя доверенного домена | ||
-u | Назначить uid | -u 1003 | Первый из доступных uid |
-g | Назначить gid | -g 1003 | Первый из доступных gid |
-G | Добавить нового пользователя в одну или несколько (разделитель запятая) групп, группа задаются по номеру. | -G 512,550 | Без ключа –G все созданные пользователь попадают в группу 513 |
-d | Назначить домашнюю папку | -d /var/user | $userHomePrefix /user |
-s | Назначить оболочку (login shell) | -s /bin/ksh | $userLoginShell |
-c | Добавить описание пользователя (gecos) | -c "admin user" | $userGecos |
-m | Создать домашнюю папку пользователя и скопировать туда информацию из папки | /etc/skel/ | |
-k | Назначить папку с «скелетом» (используется без ключа -m) | -k /etc/skel2 | $skeletonDir |
-P | По окончании обратится к скрипту smbldap-passwd для установки пароля пользователя | ||
-A | Установить, имеет ли право пользователь изменять пароль, 0=нет, 1=да | -А 1 | |
-B | Установить, должен ли пользователь изменить свой пароль после первого входа в систему, 0=нет, 1=да | -B 0 | |
-C | Назначить домашнюю папку Samba | -С \\PDC\homes | $userSmbHome |
-D | Установить букву диска, монтирующегося при входе пользователя в систему | -D H: | $userHomeDrive |
-E | Установить скрипт, который будет выполняться при входе пользователя в систему | - E common.bat | $userScript |
-F | Задать папку с профилем пользователя | -F \\PDC\profiles\user | $userProfile |
-H | Установить флаг учётной записи Samba, подробнее см. sambaAcctFlags | -H [X]
Например, флаг | |
-N | Установить реальное имя пользователя | ||
-S | Установить фамилию пользователя | ||
-M | Локальный электронный почтовый ящик (несколько записываются через запятую) | -M testuser,aliasuser | |
-T | Непосредственный электронный почтовый ящик (несколько записываются через запятую) | -T testuser@domain.org |
Например, если вы хотите создать пользователя с именем user_admin
, который:
gid=512
(Domain Admins);/dev/null
;то следует ввести команду:
smbldap-useradd -a -G 512 -m -s /bin/false -d /dev/null -F "" -P user_admin
Ещё несколько примеров (из Интернет, прим.перев.):
smbldap-useradd –a –m –M pupkin –c "vasya pupkin" pupkin smbldap-useradd -a –c "Serg Alex Lad" -N "Serg Alex" -S "Lad" -s /bin/bash ladserg
Пример добавления учётной записи доверенного домена на контроллере домена trust-pdc
:
smbldap-useradd -i trust-pdc
Вывод команды:
New password : ******* Retype new password : *******
Работа скрипта будет окончена после запроса на ввод пароля доверенного пользователя. Учетная запись будет создан в том месте каталога, где хранятся записи обо всех компьютерах (по умолчанию это ou=Computers). Таким образом, у этой учётной записи две особенности, это установка пароля для него, и флаг [I ]
, подробнее см. sambaAcctFlags.
Удаление пользователя.
Например, если вы хотите удалить пользователя user1 из LDAP каталога, и если вы также хотите удалить его домашнюю папку, выполните команду:
smbldap-userdel -r user1
Удалить домашнюю папку без подтверждения.
Удалить домашнюю папку в диалоговом режиме
Внесение изменений в учетную запись пользователя
Для внесения изменений в учетную запись пользователя используется скрипт smbldap-usermod. Ключи, используемые с этим скриптом, вынесены в таблицу:
Ключ | Описание действия ключа | Пример |
---|---|---|
-c | Добавить описание пользовательской учетной записи | |
-d | Назначить домашнюю директорию | -d /var/user |
-u | Назначить uid | -u 1003 |
-g | Назначить gid | -g 1003 |
-G | Добавить новую учетную запись в одну или несколько групп или удалить пользователя из группы (несколько записываются через запятую) | -G 512,550 -G -512,550 -G +512,550 |
-s | Назначить оболочку (login shell) | -s /bin/ksh |
-N | Установить реальное имя пользователя | |
-S | Установить фамилию пользователя | |
-P | По окончании обратится к скрипту smbldap-passwd для установки пароля пользователя | |
-a | Добавить класс объекта (objectClass) sambaSAMaccount | |
-e | Установить дату истечения срока действия пароля пользователя (формат: ГГГГ-ММ-ДД ЧЧ:ММ:СС ) | |
-A | Устанавливает, имеет ли право пользователь изменять пароль, 0 – нет, 1 - да | |
-B | Устанавливает, должен ли пользователь изменить свой пароль после первого входа в систему, 0 – нет, 1 - да | |
-C | Назначить домашнюю папку Samba | -С \\PDC\homes -С "" |
-D | Установить букву диска, монтирующегося при входе пользователя в систему | |
-E | Установить скрипт, который будет выполняться при входе пользователя в систему | - E common.bat |
-F | Задать директорию с профилем пользователя | -F \\PDC\profiles\user |
-H | Установить флаг учетной записи Samba, подробнее см. sambaAcctFlags | -H [X] |
-I | Отключить учетную запись пользователя | -I 1 |
-J | Включить учетную запись пользователя | -J 1 |
-w | Создать учетную запись рабочей станции Windows | |
-i | Создать учетную запись пользователя домена, с которым установлено доверие, подробности см. Добавление пользователя доверенного домена | |
-M | Локальный электронный почтовый ящик (несколько записываются через запятую) | -M testuser,aliasuser |
-T | Непосредственный электронный почтовый ящик (несколько записываются через запятую) | -T testuser@domain.org |
Наряду с этим, для внесения некоторых изменений в учетные данные, используется скрипт smbldap-userinfo
. Ключи, используемые с этим скриптом, вынесены в таблицу. Этот скрипт может быть использован самими пользователями для внесения некоторых данных в их учетную запись (ACL должен быть должным образом настроен на сервере каталогов).
Ключ | Описание действия ключа | Пример |
---|---|---|
-f | Задать полное имя пользователя | -f MyName |
-r | Задать номер кабинета -r 99 | |
-w | Задать номер рабочего телефона | -w 1111111 |
-h | Задать номер домашнего телефона | -h 2222222 |
-o | Записать другую информацию (gecos ) | -o "second stage" |
-s | Задать оболочку по умолчанию | -s /bin/ksh |
Изменение пароля пользователя.
Если ключи не указаны, то будут изменены оба пароля Samba и UNIX:
smbldap-passwd user1
Изменить только пароль Samba
-s user1
Изменить только пароль UNIX.
-u user1
Создание групп
Для добавления новой группы в LDAP каталог используется скрипт smbldap-groupadd
.
Например, так вы можете создать группу group1
и поместить в нее ранее созданного пользователя user1
:
smbldap-groupadd –a group1 smbldap-usermod –G +group1 user1
Добавить группу и автоматически установить соответствие (mapping)
Установить gidNimber для группы
-g 1002
gidNimber
не будет уникальным
Установить rid
группы
-r 1002
Установить sid
группы
-s S-1-5-21-3703471949-3718591838-2324585696-1002
Установить sambaGroupType
-t 2
Вывести gidNimber на экран