Вопрос или проблема
Я пытаюсь установить сервер 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 протокол для совместного доступа к файловым и печатным ресурсам.
-
Kerberos и Winbind: Kerberos отвечает за аутентификацию пользователей, а Winbind предоставляет необходимую связь между UNIX/Linux системами и AD для получения информации о пользователях и группах.
-
Конфигурационные файлы:
smb.conf
: основной файл конфигурации Samba, где указываются параметры безопасности, включая режимы аутентификации и авторизации пользователей.krb5.conf
: файл конфигурации Kerberos, в котором задаются параметры аутентификации, включая настройки KDC (Key Distribution Center).
-
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 пользователям получить доступ к ресурсам.
Применение
Для решения подобной проблемы в вашей системе, выполните следующие шаги:
-
Проверьте конфигурацию Kerberos в
krb5.conf
:Убедитесь, что настройки соответствуют вашему домену и KDC. Например:
[libdefaults] default_realm = DOMAIN.LOCAL dns_lookup_realm = true dns_lookup_kdc = true
-
Проверьте настройки Samba в
smb.conf
:Убедитесь в правильности настроек ID Mapping и конфигурации безопасности:
[global] security = ADS realm = DOMAIN.LOCAL workgroup = DOMAIN idmap config * : range = 10000-20000
-
Проверьте Winbind:
- Убедитесь, что команды
wbinfo -u
иwbinfo -g
возвращают списки пользователей и групп из AD. - Проверьте работу
getent passwd
иgetent group
для получения информации из AD.
- Убедитесь, что команды
-
Настройте доступ к доменному ресурсу с использованием актуальной информации:
Убедитесь, что shares настроены с соответствующими правами доступа, к примеру:
[homes] valid users = %S, DOMAIN.LOCAL\%S
-
Дополнительные настройки:
- Используйте параметр
winbind use default domain = yes
, чтобы избежать необходимости явно указывать домен при подключении, что может помочь в частных случаях доступа к домашним директориям.
- Используйте параметр
Этот подход послужит комплексным решением для обеспечения правильного доступа к Samba-ресурсам через учетные записи Active Directory. В случае неочевидных проблем рекомендуется детально изучать логи и учитывать все возможные конфигурационные изменения, так как нюансы каждого сетевого окружения уникальны.
Если проблема с [homes] остается актуальной, возможно подумать о настройке alias для клиентов, или полноценной интеграции доменной политики на клиентах, чтобы упростить путь подключения.