Самба-шара недоступна для пользователя AD.

Вопрос или проблема

Я пытаюсь установить сервер Samba для аутентификации в Active Directory и общих ресурсов.

Мне удалось настроить Kerberos (kinit klist работает). Я настроил smb.conf.

wbinfo -u<br>
wbinfo -g<br>
getent group *показывает все группы домена)<br>
getent users (показывает всех пользователей домена)<br>
net join выполнен успешно

Изменение nsswitch и common-session также сработало. Я могу войти в систему, используя учетные данные AD, локально и по ssh. Даже добавление группы администраторов домена в sudoer сработало. Так что я предполагаю, что аутентификация настроена правильно.

Теперь я хотел создать общий ресурс. Один с [homes] и один с доступом для группы AD.

Если я сейчас подключаюсь к общему ресурсу с компьютера под управлением Win7, мне запрашивается имя пользователя/пароль. Если я ввожу данные из первоначальной локальной учетной записи, которая была создана в процессе установки, я вижу оба общих ресурса: публичный и домашний каталог локального пользователя.

Если я использую учетные данные AD, я получаю отказ в доступе.

Я даже пытался включить гостевой доступ и отключить любой контроль доступа. Но ничего не меняется. Локальный пользователь может подключиться, но пользователь AD даже не видит общие ресурсы.

Если я включаю уровень логирования 10, я вижу, что компьютер пытается аутентифицироваться, но не может.

Что я упускаю?

[Обновление]
Я нашел проблему. Я не совсем понимаю, почему это вызывало такой эффект, но теперь общий ресурс работает почти так, как я хочу.

Я использовал

idmap uid = 10000-20000<br>
idmap gid = 10000-20000

из учебника на http://wiki.ubuntuusers.de/Samba_Winbind. Я не думал, что предупреждение о том, что эти строки устарели, вызовет проблемы, так как устаревание обычно означает, что они все еще поддерживаются. Это правда для локального входа. Но общие ресурсы ломаются. Я заменил эти две строки на

idmap config * : range = 10000-20000

и теперь общий ресурс работает.

Единственная оставшаяся проблема: чтобы подключиться к общему ресурсу [homes], мне нужно использовать COMPUTERNAME\USERNAME, но я хотел, чтобы [homes] работало с DOMAIN\USERNAME?

Если кто-то знает, как это изменить, я был бы признателен, но так как я могу использовать обычный домашний ресурс с подпапками для пользователей, я не считаю это реальной проблемой.

Ответ пользователя user305136, взятый из вопроса:

Иногда задаешь вопрос и находишь решение на следующий день. В случае если у кого-то будет та же проблема, что и у меня, вот мои конфигурационные файлы, которые сейчас работают. Я заменил Windowsserver на SERVER и домен на DOMAIN.LOCAL.

krb5.conf:
[логирование]
default = FILE:/var/log/krb5.log
[libdefaults]
ticket_lifetime = 24000
clock_skew = 300
default_realm = DOMAIN.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true

[realms]
DOMAIN.LOCAL = {
kdc = SERVER.DOMAIN.LOCAL:88
admin_server = SERVER.DOMAIN.LOCAL
default_domain = DOMAIN.LOCAL
}

[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL
.DOMAIN.LOCAL = DOMAIN.LOCAL
DOMAIN.LOCAL = DOMAIN.LOCAL

smb.conf:
[глобальные]
security = ADS
realm = DOMAIN.LOCAL
workgroup = DOMAIN
idmap config * : range = 10000-20000
server string = Linuxserver
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
winbind use default domain = yes
winbind nested groups = yes
template homedir = /home/%U
template shell = /bin/bash
client use spnego = yes
ntlm auth = yes
lanman auth = no
client ntlmv2 auth = yes
encrypt passwords = yes
restrict anonymous = 2
domain master = no
local master = no
preferred master = no
os level = 0
map to guest = bad user
guest account = nobody
unix extensions = yes
valid users = @domänen-benutzer
[homes]
comment = Userdirectory
browseable = no
valid users = %S, DOMAIN.LOCAL\%S
writeable = yes
create mode = 0600
directory mode = 0700
[home]
comment = Userdata
path = /data/home/%U
browsable = no
valid users = %U
writeable = yes
create mode = 0600
directory mode = 0700
[Data]
comment = Data
path = /data/H
writeable = yes
valid users = @domänen-benutzer
create mode = 0660
directory mode = 770

Теперь это работает.

Ответ или решение

При настройке Samba сервера для использования Active Directory (AD) аутентификации могут возникнуть ряд проблем, которые затрудняют доступ к сетевым ресурсам из-под учетных записей AD. В данном случае мы рассмотрим проблему, связанную с доступом к общим ресурсам Samba при помощи пользователей AD и методы ее решения.

Теория

Samba и его взаимодействие с Active Directory

Samba выполняет роль интеграционного моста между системами Windows и UNIX/Linux, позволяя использовать SMB/CIFS протокол для совместного доступа к файловым и печатным ресурсам.

  1. Kerberos и Winbind: Kerberos отвечает за аутентификацию пользователей, а Winbind предоставляет необходимую связь между UNIX/Linux системами и AD для получения информации о пользователях и группах.

  2. Конфигурационные файлы:

    • smb.conf: основной файл конфигурации Samba, где указываются параметры безопасности, включая режимы аутентификации и авторизации пользователей.
    • krb5.conf: файл конфигурации Kerberos, в котором задаются параметры аутентификации, включая настройки KDC (Key Distribution Center).
  3. ID Mapping: Важный аспект взаимодействия Samba и AD — сопоставление идентификаторов пользователей и групп (UID и GID) из AD с соответствующими идентификаторами в Linux-системах.

Частая ошибка, как в данном случае, связана с использованием устаревших строк конфигурации ID Mapping, что может нарушать работу доступа к общим ресурсам, несмотря на корректную аутентификацию.

Пример

В приведенном примере пользователь столкнулся с тем, что AD пользователи не могли получить доступ к общим папкам Samba, хотя локальные пользователи могли. Проблема была в использовании устаревших строк маппинга ID:

idmap uid = 10000-20000
idmap gid = 10000-20000

Эти строки были заменены на актуальные конфигурации:

idmap config * : range = 10000-20000

Это изменение позволило наладить механизм сопоставления идентификаторов UID и GID, что в свою очередь позволило AD пользователям получить доступ к ресурсам.

Применение

Для решения подобной проблемы в вашей системе, выполните следующие шаги:

  1. Проверьте конфигурацию Kerberos в krb5.conf:

    Убедитесь, что настройки соответствуют вашему домену и KDC. Например:

    [libdefaults]
    default_realm = DOMAIN.LOCAL
    dns_lookup_realm = true
    dns_lookup_kdc = true
  2. Проверьте настройки Samba в smb.conf:

    Убедитесь в правильности настроек ID Mapping и конфигурации безопасности:

    [global]
    security = ADS
    realm = DOMAIN.LOCAL
    workgroup = DOMAIN
    idmap config * : range = 10000-20000
  3. Проверьте Winbind:

    • Убедитесь, что команды wbinfo -u и wbinfo -g возвращают списки пользователей и групп из AD.
    • Проверьте работу getent passwd и getent group для получения информации из AD.
  4. Настройте доступ к доменному ресурсу с использованием актуальной информации:

    Убедитесь, что shares настроены с соответствующими правами доступа, к примеру:

    [homes]
    valid users = %S, DOMAIN.LOCAL\%S
  5. Дополнительные настройки:

    • Используйте параметр winbind use default domain = yes, чтобы избежать необходимости явно указывать домен при подключении, что может помочь в частных случаях доступа к домашним директориям.

Этот подход послужит комплексным решением для обеспечения правильного доступа к Samba-ресурсам через учетные записи Active Directory. В случае неочевидных проблем рекомендуется детально изучать логи и учитывать все возможные конфигурационные изменения, так как нюансы каждого сетевого окружения уникальны.

Если проблема с [homes] остается актуальной, возможно подумать о настройке alias для клиентов, или полноценной интеграции доменной политики на клиентах, чтобы упростить путь подключения.

Оцените материал
Добавить комментарий

Капча загружается...