Вопрос или проблема
У меня возникла проблема с OpenMediaVault и Active Directory. Я настроил Samba и присоединил сервер к домену. Но так как в каталоге много списков рассылки и отключенных пользователей, Samba долго загружает список пользователей и групп или иногда просто отказывается, и нам нужно перезапустить службу.
Я хотел бы узнать, есть ли способ настроить один из этих двух вариантов, чтобы ограничить пользователей, которых Samba отображает.
- предотвратить перечисление Samba отключенных пользователей.
- ограничить область действия Samba одной OU в Active Directory.
Это информация из smb.conf
[global]
workgroup = DOMAIN
server string = %h server
dns proxy = no
log level = 0
log file = /var/log/samba/log.%m
max log size = 1000
logging = syslog
panic action = /usr/share/samba/panic-action %d
passdb backend = tdbsam
obey pam restrictions = no
unix password sync = no
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY
guest account = nobody
load printers = no
disable spoolss = yes
printing = bsd
printcap name = /dev/null
unix extensions = yes
create mask = 0777
directory mask = 0777
use sendfile = yes
aio read size = 1
aio write size = 1
time server = no
wins support = no
disable netbios = yes
multicast dns register = no
server min protocol = SMB2_02
# Специальная конфигурация для Time Machine от Apple
fruit:aapl = yes
fruit:copyfile = yes
fruit:nfs_aces = no
# Дополнительные параметры
realm = DOMAIN.COM
security = ads
encrypt passwords = yes
preferred master = False
local master = No
domain master = No
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
client use spnego = yes
Ответ или решение
Когда речь идет о проблемах с Samba, связанных с тайм-аутами при перечислении множества пользователей, это может быть довольно распространенной задачей, особенно в крупных и сложных сетевых структурах, таких как Active Directory с множеством учетных записей, включая отключенные и почтовые списки. Решение данной проблемы требует глубокого понимания того, как Samba взаимодействует с Active Directory, и какие конфигурации можно применить для оптимизации этого процесса. Ваша ситуация с OpenMediaVault является отличным примером такой задачи.
Теория:
Samba, действуя в качестве моста между UNIX-подобными системами и Active Directory, использует различные механизмы для доступа и перечисления пользователей и групп. Когда в Active Directory имеется большое количество объектов, это может привести к долгим задержкам или даже к тайм-аутам в процессе перечисления, особенно если эти объекты не нужны для вашей задачи. Параметры winbind enum users
и winbind enum groups
в конфигурации smb.conf
отвечают за непосредственное перечисление пользователей и групп при инициализации. В вашем случае, актуальными улучшениями может быть подавление перечисления отключенных пользователей или фокусировка на определенной организационной единице (OU) в Active Directory.
Пример:
- Исключение отключенных пользователей:
Чтобы исключить отключенных пользователей из списка, можно расширить настройки фильтрации в конфигурации winbind. К сожалению, стандартный SMB-protocol не поддерживает простого способа фильтрации аккаунтов по их статусу в файловой системе. Однако, можно использовать скриптами или сторонними инструментами, чтобы автоматизировать этот процесс.
- Ограничение области видимости до конкретного OU:
Ограничение до определенной организационной единицы — это распространенная стратегия для управления многочисленными объектами в LDAP-каталоге. Для этого используйте опцию winbind nss info
и настройте idmap config DOMAIN : range
и idmap config DOMAIN : schema_mode
так, чтобы отсортировать пользователей и группы от конкретного контейнера. К этому может также помочь указание базового DN (Distinguished Name) для выполнения действий с определённой OU.
Применение:
Для встроенной фильтрации, например, на уровне OU, вам может понадобиться вручную модифицировать .ldif
файлы или использовать такие утилиты как ldapsearch
для проверки правильности поиска с учетом ваших прописанных фильтров:
ldapsearch -x -b "ou=YourOU,dc=example,dc=com" "(objectClass=user)"
Это может быть полезно для того, чтобы определить подходит ли ваш фильтр для использования с Samba.
Затем нужно изменить конфигурацию Samba в файле smb.conf
. Пример правильного использования ограничений по OU и активным пользователям может выглядеть следующим образом:
[global]
winbind enum users = no
winbind enum groups = no
winbind nss info = rfc2307
idmap config DOMAIN : backend = ad
idmap config DOMAIN : schema_mode = rfc2307
idmap config DOMAIN : range = 10000-20000
idmap config DOMAIN : base_rdn = ou=YourOU,dc=example,dc=com
Обратите внимание на использование winbind enum users = no
и winbind enum groups = no
, которые предотвращают автоматическое перечисление пользователей и групп, что может значительно снизить нагрузку на систему и, как следствие, уменьшить время ожидания.
Заключение:
Подводя итог, ключ к решению вашей проблемы с тайм-аутами в Samba при большом количестве пользователей в Active Directory лежит в правильной настройке ее конфигурационных параметров и возможном применении скриптов для фильтрации ненужных объектов. Это требует некоторой подготовки и понимания работы Active Directory и winbind, но с корректными настройками и инструментами можно достичь стабильной и быстрой работы системы.