Содержание
- 1 Общая информация
- 2 Проверка требований
- 3 Установка Samba
- 4 Настройка Samba
- 5 Проверка работы и отладка
- 6 Дополнительная настройка
- 7 Доступ к Samba из Windows 7 и 2008 r2
- 8 Работа над ошибками
- 8.1 Winbind не запускается
- 8.2 Ошибка получения билета Kerberos
- 9 Полезные комманды
- 10 См. также
- 11 Cсылки
Общая информация
Если вам нужно просто предоставить сетевой доступ к ресурсам Linux компьютера, то смотрите статью Samba.
В этой статье мы опишем как подключить Linux компьютер к домену под управлением Microsoft Active Directory и сделать из него файловый сервер.
После выполнения этой инструкции мы будем иметь в сети файловый сервер под управлением ОС Линукс, входящий в домен Windows 2003 и ничем не отличающийся от файлового сервера под Windows. Пользователи домена смогут обращаться к его ресурсам под своими учётными записями. Доступ регулируется группами домена AD.
По этой инструкции настраивались Debian (4, 5), Ubuntu 9.10, создавалась она на основе официальной документации и многих рекомендаций и инструкций из Интернета. Остальные Linux’ы настраиваются сходным образом.
Для Alt Linux написана хорошая инструкция http://freesource.info/wiki/AltLinux/Dokumentacija/SambaInWin2kDomain?v=omo&
Проверка требований
- Проверяем что Samba собрана с поддержкой Kerberos:
# smbd -b | grep KRB HAVE_KRB5_H HAVE_ADDRTYPE_IN_KRB5_ADDRESS HAVE_DECODE_KRB5_AP_REQ HAVE_KRB5 HAVE_KRB5_AUTH_CON_SETUSERUSERKEY HAVE_KRB5_C_ENCTYPE_COMPARE HAVE_KRB5_C_VERIFY_CHECKSUM HAVE_KRB5_ENCRYPT_BLOCK HAVE_KRB5_ENCRYPT_DATA HAVE_KRB5_FREE_AP_REQ HAVE_KRB5_FREE_DATA_CONTENTS HAVE_KRB5_FREE_KEYTAB_ENTRY_CONTENTS HAVE_KRB5_FREE_KTYPES HAVE_KRB5_FREE_UNPARSED_NAME HAVE_KRB5_GET_PERMITTED_ENCTYPES HAVE_KRB5_GET_RENEWED_CREDS HAVE_KRB5_KEYBLOCK_IN_CREDS HAVE_KRB5_KEYTAB_ENTRY_KEY HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM HAVE_KRB5_KT_FREE_ENTRY HAVE_KRB5_LOCATE_KDC HAVE_KRB5_MK_REQ_EXTENDED HAVE_KRB5_PRINCIPAL2SALT HAVE_KRB5_PRINC_COMPONENT HAVE_KRB5_SET_DEFAULT_TGS_KTYPES HAVE_KRB5_SET_REAL_TIME HAVE_KRB5_STRING_TO_KEY HAVE_KRB5_TKT_ENC_PART2 HAVE_KRB5_USE_ENCTYPE HAVE_LIBGSSAPI_KRB5 HAVE_LIBKRB5 HAVE_MAGIC_IN_KRB5_ADDRESS HAVE_TICKET_POINTER_IN_KRB5_AP_REQ KRB5_VERIFY_CHECKSUM_ARGS
- Также проверим что поддерживается LDAP
# smbd -b | grep LDAP HAVE_LDAP_H HAVE_LDAP HAVE_LDAP_ADD_RESULT_ENTRY HAVE_LDAP_DN2AD_CANONICAL HAVE_LDAP_INIT HAVE_LDAP_INITIALIZE HAVE_LDAP_SET_REBIND_PROC HAVE_LIBLDAP LDAP_SET_REBIND_PROC_ARGS
- Для корректной работы Samba в домене Windows 2003 нужны версии MIT Kerberos version >=1.3.1. Проверим:
# dpkg -l | grep krb ii krb5-config 1.22 Configuration files for Kerberos Version 5 ii libkrb53 1.6.dfsg.4~beta1-5lenny1 MIT Kerberos runtime libraries
- Для корректной работы с Windows 2008 серверами сама Samba должна быть достаточно свежая:
# smbd -V Version 3.2.5
Установка Samba
- Устанавливаем сервер и клиент samba.
# apt-get install samba samba-client krb5-config
При настройке krb5-config лучше указывать IP адреса контроллеров домена, а не их DNS имена.
Настройка Samba
- Для подключения к домену Active Directory удобно использовать утилиту Likewise-Open.
- Для администрирования Samba удобно использовать SWAT или webmin, которые предоставляют веб интерфейс. Попасть на него можно по адресу http://server_address:901 и https://server_address:10000 соответственно, указав для соединения пользователя root. Но будьте осторожны — он полностью переписывает smb.conf и некоторые параметры может просто игнорировать. Лучше предварительно сделать резервную копию файла. Я сначала использовал SWAT, а затем дорабатывал конфигурационный файл /etc/samba/smb.conf руками. Вот, что осталось у меня не закоментированным (принтеры к этому серверу не подключены):
[global] unix charset = LOCALE realm = WORKGROUP.DOMAIN.LOCAL server string = Storage samba server interfaces = eth0 bind interfaces only = Yes security = ADS obey pam restrictions = Yes passdb backend = tdbsam passwd program = /usr/bin/passwd %u passwd chat = *EntersnewsUNIXspassword:* %nn *RetypesnewsUNIXspassword:* %nn *passwordsupdatedssuccessfully* . log level = 3 syslog = 0 log file = /var/log/samba/log.%m max log size = 100 name resolve order = lmhosts host wins bcast printcap name = CUPS local master = No domain master = No dns proxy = No ldap ssl = no panic action = /usr/share/samba/panic-action %d idmap uid = 10000-20000 idmap gid = 10000-20000 template shell = /bin/bash invalid users = root [print$] comment = Printer Drivers path = /var/lib/samba/printers [distrib] path = /data/distrib valid users = @WORKGROUPDistribGroup write list = @WORKGROUPDistribGroup read only = No create mask = 0777 directory mask = 0777 [backup] path = /data/backup valid users = @WORKGROUPBackupGroup write list = @WORKGROUPBackupGroup read only = No create mask = 0777 directory mask = 0777
Мы описали два общих каталога:
- backup — доступ имеют только пользователи входящие в группу BackupGroup в Active Directory. Они могут создавать и удалять файлы/каталоги
- distrib — доступ имеют все пользователи входящие в группу DistribGroup в Active Directory
В приведённой конфигурации подразумевается, что eth0 — это сетевой интерфейс в локальную сеть, где домен имеет полное имя WORKGROUP.DOMAIN.LOCAL
- редактируем /etc/nsswitch:
passwd: compat winbind group: compat winbind shadow: compat winbind hosts: files dns wins networks: files dns protocols: files services: files ethers: files rpc: files netgroup: files
- Проверим, что в /etc/hosts есть корректная запись для нашего сервера, также можно добавить записи для контроллеров доменов:
10.0.0.15 storage.domain.local storage 10.0.0.85 dcwg1.domain.local dcwg1 10.0.0.245 dcwg2.domain.local dcwg2
- Удаляем если есть (или переносим в резервные копии) файл /etc/samba/secrets.tdb и все файлы из /var/lib/samba/*.tdb
- Проверяем конфигурацию (не обязательно):
- testparm -s
В Ubunto testparm находится в пакете samba-common-bin
- Проверим как Samba-3 winbind общается с контроллером домена Active Directory посредством протокола Kerberos:
# net ads info LDAP server: 10.0.0.85 LDAP server name: dcwg1.workgroup.domain.local Realm: WORKGROUP.DOMAIN.LOCAL Bind Path: dc=WORKGROUP,dc=DOMAIN,dc=LOCAL LDAP port: 389 Server time: Срд, 03 Мар 2010 13:12:14 NOVT KDC server: 10.0.0.85 Server time offset: -5
На рассхождение времени в секундах указывает строка «Server time offset: -5». Обратите внимание, что протокол Kerberos зависим от времени, и расхождение с часами контроллера домена допускается лишь незначительное, поэтому желательно настроить NTP клиент (см. статьи по настройке NTP). В Ubuntu это указывается в файле /etc/default/ntpdate:
NTPSERVERS="10.0.0.85 10.0.0.245"
- В Debian (и его сыновьях, таких как Ubuntu и внуках вроде Linux Mint) при установке пакета krb5-cofig сразу предлагается его настройка. Лучше всего попробовать работать с этими настройками, но если ничего предложено не было или мы хотим что-то изменить, то редактируем /etc/krb5.conf (я для более стабильной работы использовал ip адреса вместо имён серверов):
[libdefaults] default_realm = WORKGROUP.DOMAIN.LOCAL # The following krb5.conf variables are only for MIT Kerberos. krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true # #... # # The following libdefaults parameters are only for Heimdal Kerberos. v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] WORKGROUP.DOMAIN.LOCAL = { kdc = 10.0.0.85 kdc = 10.0.0.245 admin_server = 10.0.0.85 } # #... # [login] krb4_convert = true krb4_get_tickets = false
- Проверим работает ли Kerberos, постараемся получить билет и просмотреть его:
# kinit administrator@WORKGROUP.DOMAIN.LOCAL Password for administrator@WORKGROUP.DOMAIN.LOCAL: # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@WORKGROUP.DOMAIN.LOCAL Valid starting Expires Service principal 03/06/10 14:51:41 03/07/10 00:51:47 krbtgt/WORKGROUP.DOMAIN.LOCAL@WORKGROUP.DOMAIN.LOCAL renew until 03/07/10 14:51:41
- Удалим полученный билет:
# kdestroy
- Присоединяемся к домену:
# net ads join -UAdministrator Administrator's password: Using short domain name -- WORKGROUP Joined 'STORAGE' to realm 'WORKGROUP.DOMAIN.LOCAL'
Всё, компьютер включен в домен, что можно проверить на контроллере. Даже если после приведённых строк получили следующие:
[2010/03/06 15:04:00, 0] libads/kerberos.c:332(ads_kinit_password) kerberos_kinit_password STORAGE$@WORKGROUP.DOMAIN.LOCAL failed: Client not found in Kerberos database DNS update failed!
Проверка работы и отладка
- Для удобства отладки сделаем ссылку на каталог журналов:
# ln -s /var/log/samba /etc/samba/log
- Запускаем samba и winbind:
# /etc/init.d/samba start # /etc/init.d/winbind start
- Для проверки правильно ли подключение к домену можно посмотреть список пользователей и групп домена (не обязательно):
# wbinfo -u # wbinfo -g
Если нас не понимают, то подсказываем пароль для wbinfo и смотрим: список доменов в сети, информацию о домене WORKGROUP, список пользователей и групп домена:
# wbinfo --set-auth-user=root%root_password # wbinfo --all-domains # wbinfo -D WORKGROUP # wbinfo -t
- Проверяем, как работает NSS. Команда getent показывает инфо о пользователе, который может быть как в домене, так и юниксовый:
# getent passwd | grep pm pm:x:15000:15000::/home/WORKGROUP/pm:/bin/false # getent passwd | grep pavel pavel:x:500:500:Pavel Malahov:/home/pavel:/bin/bash
- Теперь можно использовать ресурсы на линукс-сервере, на которые мы дали доступ, как обычные доменные ресурсы.
Дополнительная настройка
- Можно также сопоставить (но это не обязательно) локальные учётные данные и из домена Windows. Для сопоставления пользователей редактируем файл /etc/samba/smbusers.conf:
root = admin administrator
- для сопоставления (мапирования от англ. Map) групп домена и групп UNIX выполняем:
# net groupmap modify ntgroup="Domain Admins" unixgroup=root # net groupmap modify ntgroup="Domain Users" unixgroup=users # net groupmap modify ntgroup="Domain Guests" unixgroup=nobody
- После того как всё отлажено, можно понизить уровень записи в журнал до «1». В /etc/samba/smb.conf:
log level = 1
Доступ к Samba из Windows 7 и 2008 r2
Начиная с этих версий параметры авторизации у MS поменялись. Скорее всего Samba вскоре это учтёт, а пока подружить системы можно изменив на Win7 свойства сетевой безопасности:
Пуск — Панель управления — Администрирование — Локальная политика безопасности — Локальные политики — Параметры безопасности
- Сетевая безопасность: минимальная сеансовая безопасность для клиентов на базе NTLM SSP — убрать галочку с «Требовать 128-битное шифрование». Таких параметра два — выполнить для обоих
- Сетевая безопасность: уровень проверки подлинности LAN Manager — выбрать в списке пункт «Отправлять LM- и NTML-ответы»
Работа над ошибками
Winbind не запускается
При запуске Samba обнаруживаем, что winbind не запустился:
# /etc/init.d/winbind status * winbind is not running
В журнале log.winbindd обнаруживаем запись:
[2010/03/06 13:54:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain) Added domain BUILTIN S-1-5-32 [2010/03/06 13:54:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain) Added domain STORAGE S-1-5-21-3963871611-1338977097-196861091 [2010/03/06 13:54:34, 0] winbindd/winbindd_util.c:782(init_domain_list) Could not fetch our SID - did we join? [2010/03/06 13:54:34, 0] winbindd/winbindd.c:1385(main) unable to initialize domain list
Видим, что добавлен «встроенный домен» (BUILTIN) и домен «название компьютера» (STORAGE), подключиться к домену AD не удалось.
Решение: Переподключить компьютер в домен. Удалять придётся с самого контроллера, т.к. комадна net ads leave скорее всего не поможет.
Ошибка получения билета Kerberos
При попытке получить билет Kerberos получили:
kinit: KDC reply did not match expectations while getting initial credentials
Решение: указать имя домена в другом регистре. Скорее всего нужны все заглавные
Полезная ссылка: http://subscribe.ru/archive/comp.soft.win.linuxsa/200510/19115643.html
Полезные комманды
$ smbclient -N -L 10.0.0.117 | показывает ресурсы компьютера с адресом 10.0.0.117 |
$ smbclient //10.0.0.117/common | Вход в расшаренную директорию. Пользователь unix от которого выполняется команда должен быть зарегистрирован в домене. |
# net ads join -U pavel -d 3 | Добавить в домен пользователя pavel |
# winbindd -d 3 -i | Режим отладки (-d), winbindd запускается не как демон (-i) |
# wbinfo -a mydomain\myuser%mypasswd | авторизируемся в домене (через winbindd, wbinfo входит в этот пакет) |
# ldapsearch | запросы к LDAP серверу, в нашем случае к MS Active Directory |
# tdbdump /etc/samba/secrets.tdb | просмотреть содержимое файла *.tdb |
См. также
- Статья Samba даёт краткий общий обзор пакета Samba утилит для него, а также описывает простой (без авторизации в домене) способ предоставления каталогов в общий доступ.
Cсылки
- http://linux.yaroslavl.ru//docs/serv/samba/samba-win2000.html — Samba и доменная аутентификация Windows2000
- http://us6.samba.org/samba/docs/man/Samba-Guide/unixclients.html#adssdm- Active Directory Domain with Samba Domain Member Server — подробная инструкция как подключить Linux сервер с помощью Samba 3 к домену под управлением AD Windows 2003.
- http://us6.samba.org/samba/docs/man/Samba-Guide/kerberos.html#id397375 — пример настройки доступа для пользователей Active Directory
- Samba-HOWTO-Collection.pdf, стр.54-57 (поставляется с исходниками) или
- http://jcifs.samba.org/ntstatus.txt — описание статусов
Эта статья протухла. Её нужно существенно доработать или удалить |
Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux
Задача
Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux.
Дано
- Windows Server 2003;
- Simply Linux (обновленный до бранча 5.1);
- Права администратора домена OFFICE.DOMEN.LOCAL (имя вашего домена).
Устанавливаем необходимые пакеты
samba-swat samba-client samba-winbind krb5-kinit libkrb5 ntpdate pam_mount
Настраиваем сетевое соединение
Необходимо добиться резолва имен ваших машин в сети. Например, имя контроллера домена — DC3.OFFICE.DOMEN.LOCAL, а его ip-адрес — 192.168.10.11. Он же является DNS- и WINS-сервером в сети.
Проверяем его доступность по ip-адресу:
ping 192.168.10.11 PING 192.168.10.11 (192.168.10.11) 56(84) bytes of data. 64 bytes from 192.168.10.11: icmp_seq=1 ttl=128 time=0.138 ms 64 bytes from 192.168.10.11: icmp_seq=2 ttl=128 time=0.217 ms
Проверяем его доступность по имени узла:
ping DC3 ping: unknown host DC3
Для того, чтобы узел отвечал по имени, необходимо указать домен поиска OFFICE.DOMEN.LOCAL. В Центре Управления Системой это указывается в настройках сетевого интерфейса в поле Домены поиска. Не забываем нажать Применить.
Проверяем его доступность по имени узла:
ping DC3 PING DC3.office.domen.local (192.168.10.11) 56(84) bytes of data. 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.137 ms 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.147 ms
В файл /etc/hosts добавляем запись о нашей машине:
127.0.0.1 localhost.localdomain localhost 127.0.0.1 wslinux.office.domen.local wslinux
По имени DC3 узел отвечает, но вот если попробовать его пинговать, указав полное имя домена DC3.OFFICE.DOMEN.LOCAL — получим ошибку:
ping DC3.OFFICE.DOMEN.LOCAL ping: unknown host DC3.OFFICE.DOMEN.LOCAL
И соответственно в домен машину мы ввести не сможем. Ищем файл /etc/nsswitch.conf, в нем строку с hosts:
У по умолчанию она имеет вид:
hosts: files nisplus nis mdns4_minimal [NOTFOUND=return] dns mdns4 fallback
И приводим ее к такому виду:
hosts: files dns nisplus nis mdns4_minimal [NOTFOUND=return] mdns4 fallback
Сохраняем изменения и проверяем:
ping DC3.OFFICE.DOMEN.LOCAL PING DC3.OFFICE.DOMEN.LOCAL (192.168.10.11) 56(84) bytes of data. 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.201 ms 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.133 ms
Настраиваем сервисы самбы
Теперь необходимо включить в автозапуск необходимые службы. Выполним следующие команды от рута:
# chkconfig --list | grep smb smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Смотрим, на каких уровнях запускается самба, если ничего не задано — включаем нужные уровни:
# chkconfig --levels 2345 smb on
Проверяем:
# chkconfig --list | grep smb smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Делаем то же самое для winbind:
# chkconfig --list | grep winbind winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig --levels 2345 winbind on
Запускаем сервис самба:
# service smb start
Чтобы сервис swat запускался автоматически: в файле /etc/xinetd.d/swat меняем значение disable с yes на no и перезапускаем службу:
# service xinetd restart
Запускаем swat в браузере: http://localhost:901 (либо же правим /etc/samba/smb.conf соотвественно)
Во вкладке GLOBALS ставим следующие значения:
Workgroup = OFFICE (указываем первую часть имени домена) Realm = OFFICE.DOMEN.LOCAL (полное имя домена) Netbios name = WSLINUX (netbios имя нашего компьютера) Security = ads (это режим domain member)
Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный):
# ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать) Password server = 192.168.10.11
# Диапазоны идентификаторов для виртуальных пользователей и групп. idmap uid = 10000 - 40000 idmap gid = 10000 - 40000 winbind enum users = yes winbind enum groups = yes
# Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп # будут использоваться с доменом, т.е. вместо username - DOMAINusername. winbind use default domain = yes
# Если вы хотите разрещить использовать командную строку для пользователей домена, то # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false template shell = /bin/bash
# Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку winbind refresh tickets = yes
Снова подтверждаем изменения (сохранить изменения). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).
Настраиваем синхронизацию времени с нашим контроллером домена
Проверяем уровни запуска службы:
# chkconfig --list | grep ntpd ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Задаем необходимые:
# chkconfig --levels 345 ntpd on
Добавляем в конфигурационный файл /etc/ntpd.conf запись о сервере времени для синхронизации, все остальное комментируем:
#servers pool.ntp.org servers 192.168.10.11
Запускаем синхронизацию времени:
# ntpdate 192.168.10.11 17 Aug 11:03:44 ntpdate[14747]: step time server 192.168.10.11 offset 82.524429 sec
И только после этого запускаем службу:
# service ntpd start
Настраиваем службу аутентификации для получения билетов Kerberos
Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf. Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть):
[libdefaults] default_realm = OFFICE.DOMEN.LOCAL dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h forwardable = yes [realms] OFFICE.DOMEN.LOCAL = { kdc = 192.168.10.11 } [domain_realm] .office.domen.local = OFFICE.DOMEN.LOCAL office.domen.local = OFFICE.DOMEN.LOCAL [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
- NB: При отсутствии параметра admin_server, у пользователя будет отсутствовать возможность сменить свой пароль средствами Kerberos —solo 14:03, 2 ноября 2012 (MSK)
Пробуем получить билет авторизации:
# kinit admin@OFFICE.DOMEN.LOCAL Password for mad_max@OFFICE.DOMEN.LOCAL:
где admin — имя доменного админа, а OFFICE.DOMEN.LOCAL — имя вашего домена (именно заглавными).
Если все прошло хорошо, в ответ на этот запрос вы ответа не получите.
Проверяем наличие билета командой klist, вывод должен быть примерно такой:
# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: admin@OFFICE.DOMEN.LOCAL Valid starting Expires Service principal 08/17/10 11:11:58 08/17/10 21:12:04 krbtgt/OFFICE.DOMEN.LOCAL@OFFICE.DOMEN.LOCAL renew until 08/18/10 11:11:58
Правим /etc/nsswitch.conf примерно до такого вида:
passwd: files winbind shadow: tcb files winbind group: files winbind gshadow: files
Чтобы изменения в конфиге /etc/nsswitch.conf вступили в силу без перезагрузки, нужно от рута дать команду:
# ldconfig
Вводим в домен
Для ввода в домен необходимо дать команду:
# net ads join -U admin admin's password: Using short domain name -- OFFICE Joined 'WSLINUX' to realm 'OFFICE.DOMEN.LOCAL'
где admin — имя доменного админа, а admin’s password — пароль доменного админа.
- NB: Для корректного ввода в домен может потребоваться предварительный останов демонов smb и winbind —solo 14:12, 2 ноября 2012 (MSK)
Проверить, что мы вошли в домен можно командой wbinfo -u (велика вероятность, что она отработает только после перезагрузки компьютера):
$ wbinfo -u OFFICEгость OFFICEадминистратор OFFICEuser1 OFFICEuser2 …
Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо оставить /etc/pam.d/gdm или /etc/pam.d/lightdm в прежнем виде:
#%PAM-1.0 auth required pam_shells.so auth required pam_succeed_if.so quiet uid ne 0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth substack common-login auth optional pam_gnome_keyring.so account include common-login password include common-login session substack common-login session optional pam_console.so -session optional pam_ck_connector.so session required pam_namespace.so session optional pam_gnome_keyring.so auto_start
(Для KDE4 это файл /etc/pam.d/kde4)
А /etc/pam.d/system-auth-winbind к виду (если его нет, то создать):
#%PAM-1.0 auth [success=2 default=ignore] pam_tcb.so shadow fork prefix=$2y$ count=8 nullok auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE auth required pam_permit.so account [success=2 default=ignore] pam_tcb.so shadow fork account requisite pam_succeed_if.so uid >= 500 quiet account required pam_winbind.so use_first_pass account required pam_permit.so password required pam_passwdqc.so config=/etc/passwdqc.conf password [success=2 default=ignore] pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb password requisite pam_succeed_if.so uid >= 500 quiet password required pam_winbind.so session [success=2 default=ignore] pam_tcb.so session requisite pam_succeed_if.so uid >= 500 quiet session required pam_winbind.so session required pam_mktemp.so session required pam_mkhomedir.so silent session required pam_limits.so
И /etc/pam.d/system-auth-use_first_pass-winbind к виду(если его нет, то создать):
#%PAM-1.0 auth [success=2 default=ignore] pam_tcb.so shadow fork prefix=$2y$ count=8 nullok use_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_winbind.so use_first_pass auth required pam_permit.so password [success=2 default=ignore] pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb password requisite pam_succeed_if.so uid >= 500 quiet password required pam_winbind.so use_authtok password required pam_permit.so
Не забываем переключить авторизацию на winbind
- (Внимание! Восле такой манипуляции на KDesktop 6 пропадает возможность залогиниться вообще, поэтому я решил сделать обход — см.Примечание —Tora-bora 19:02, 19 октября 2012 (MSD))
# control system-auth winbind
С такими конфигами будет работать авторизация из gdm, gnome-screensaver, ssh.
Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить один ньюанс. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем.
Добавляем пользователей с административными привилегиям (sudo)
Разрешаем всем вызывать sudo:
# control sudo public
Разрешаем группе администраторов LinuxAdmins (должна быть создана) повышать свои привилегии без запроса пароля:
# echo '%OFFICE\LinuxAdmins ALL= NOPASSWD : ALL' >> /etc/sudoers
Настраиваем автомонтирование сетевых ресурсов
Устанавливаем smbnetfs, samba, samba-client, fuse-smb.
Создаем /etc/fuse.conf и добавляем запись:
user_allow_other (не забываем нажимать enter после строчки)
Добавляем в /etc/modules запись:
fusermount public (не забываем нажимать enter после строчки)
Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/
Копируем /etc/samba/smb.conf в /home/%username%/.smb/
Добавляем пользователя в группу fuse.
Создаем в домашнем каталоге каталог (например) /home/%username%/net
Создаем скрипт запуска в удобном для нас месте (например) /home/%username%/.smb/net со следующим содержанием:
#!/bin/sh smbnetfs /home/%username%/net
Делаем скрипт исполняемым и помещаем в автозапуск, например в .bash_profile.
Библиография
Инструкция составлена с применением следующих ресурсов:
- http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html
- https://docs.altlinux.org/ru-RU/archive/2.2/html-single/master/admin-html/ch12s07.html
- http://team.ru/soft/altlinux_domen.shtml
- http://forum.altlinux.org/index.php?topic=376.0
- http://help.ubuntu.ru/wiki/ввод_в_домен_windows
Примечание
KDesktop
На KDesktop мне не удалось настроить вход в домен AD используя
# control system-auth winbind
Взамен этого можно сделать некоторые ручные манипуляции
- делаем ссылку system-auth указывающую на system-auth-winbind
- делаем ссылку system-auth-use_first_pass указывающую на system-auth-use_first_pass-winbind
- файл /etc/pam.d/kde4 приводим к виду:
#%PAM-1.0 auth required pam_group.so auth include system-auth-winbind auth required pam_nologin.so account include system-auth-winbind password include system-auth-winbind session include system-auth-winbind
- файл /etc/pam.d/kde4-kscreensaver приводим к виду:
#%PAM-1.0 auth required pam_securetty.so auth required pam_nologin.so auth sufficient pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login auth sufficient pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass
Доступ к локальным группам
- Внимание! Указанное ниже является не полностью безопасным решением, применяйте, если понимаете риск.
Чтобы все доменные пользователи были включены в определенные локальные группы (могли переключаться в root, запускать VirtualBOX и проч.) нужно добавить в /etc/security/group.conf
*;*;*;Al0000-2400;wheel,audio,cdrom,cdwriter,vboxusers,scanner
- первая звездочка — «все сервисы», они же — пути авторизации (например, xdm, kdm, su, ssh и т.д. и т.п.)
- вторая звездочка — «все tty».
- третья звездочка — «все пользователи». Тут можно сделать вышеупомянутое перечисление, через запятую.
- четвертое поле — это время. Здесь — «круглосуточно»
- пятое поле — в какие, собственно группы надо включить пользователя.
И включить строку
auth required pam_group.so
в конф. файл входа в систему( для KDE это /etc/pam.d/kde4)
Переустановка
После переустановки системы (при сохранении раздела /home) необходимо выставить владельца домашнего каталога доменного пользователя (владелец меняется)
chown -R ivanov /home/DOMAIN/ivanov/
Смена имени хоста
Если нужно сменить имя хоста, править HOSTNAME в файле /etc/sysconfig/network
Два IP-адреса
Замечены проблемы со входом доменного пользователя при наличии двух IP-адресов. На этапе первого входа пользователя лучше от второго IP временно отказаться.
Дополнения
- В случае появления ошибки ERROR_DNS_GSS_ERROR, удалите пакет hostname-hook-hosts и удалите из /etc/hosts строку определения
127.0.0.1 <имя хоста>...
Настройка LightDM
В /etc/lightdm/lightdm.conf раскомментируйте строку в группе [SeatDefaults]:
greeter-hide-users=true
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.
Также полезно выключить выбор языка. В файле /etc/lightdm/lightdm-gtk-greeter.conf в группе [greeter] укажите
show-language-selector=false
В новых версиях lightdm-gtk-greeter можно указать кнопки явно:
show-indicators=a11y;power
Полный перечень доступных кнопок:
show-indicators=a11y;power;session;language
Ссылки
- Ввод компьютера в домен Windows (под Ubuntu)
- Отладка аутентификации
- https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto
Рубрика: Администрирование / Администрирование |
Мой мир Вконтакте Одноклассники Google+ |
Мирослав Бусалов
Как подружить Linux с доменом Active Directory
Windows или Linux? Наверное, нет ни одного системного администратора, который не задумывался бы над этим вопросом. О плюсах и минусах операционных систем Open Source и продуктов Microsoft написаны гигабайты текстов, ожесточенные споры не утихают уже много лет. Наблюдая за этими баталиями, хочется лишь одного – гармонии.
Предположим следующую ситуацию. Часть сотрудников вашей компании выполняет только рутинные операции в одном-двух бизнес-приложениях, используя браузер. И операционная система для них значения не имеет. Исходя из экономической целесообразности, нет смысла ставить на такие рабочие станции Windows.
Или другой пример – есть отдел разработчиков под UNIX, которым удобнее и комфортнее использовать на рабочей станции Linux. Как можно заметить, причины внедрения Linux-десктопов в организации могут быть различные. При этом в вашей организации есть домен Active Directory, все пользователи имеют свои учетные записи, собственные папки на файловом сервере и разные права на свои рабочие станции. Подобные удобства всем хотелось бы сохранить и на рабочих станциях под Linux, особенно системному администратору, поскольку централизованная авторизация и хранение данных пользователей на сервере уменьшают его головную боль.
Статья представляет собой пошаговое руководство, как «подружить» рабочие станции Linux с доменом Active Directory.
Начальные условия
Домен Active Directory под управлением одного или более контроллеров домена на базе Windows Server 2003; в качестве Linux-десктопа используется Kubuntu 7.10
Цели
- Обеспечить единую аутентификацию пользователей.
- Обеспечить авторизацию пользователей в домене Active Directory.
- Обеспечить прозрачную и сквозную авторизацию на ресурсах сети (SSO – Single Sign-On).
- Обеспечить хранение пользовательских данных на сервере.
Про последний пункт хотелось бы сказать следующее: в данном примере в качестве файлового сервера используется Windows-сервер. Поэтому речь идет только о хранении данных пользователей. Сохранять профиль UNIX-пользователя на сервере не представляется возможным, так как в качестве Linux-десктопа используется Kubuntu 7.10 со встроенным экранным менеджером KDE. В процессе создания профиля пользователя KDE создает символьные ссылки (symlink), которые необходимы для корректной работы. Естественно, что создать symlink в файловой системе NTFS на Windows Server 2003 не получится.
Используемые обозначения
- domain.ru – полное имя домена Active Directory;
- dc.domain.ru – полное имя контроллера домена;
- fileserver.domain.ru – полное имя файлового сервера.
Условно всю работу можно разделить на следующие этапы:
- Модернизация схемы Active Directory.
- Настройка атрибутов будущих UNIX-пользователей и групп.
- Настройка рабочей станции с Kubuntu.
- Настройка ресурсов сети (веб-серверов, службы ssh и т. д.) для обеспечения прозрачной и сквозной авторизации пользователей.
Модернизация схемы Active Directory
В классической схеме AD невозможно хранить атрибуты UNIX-пользователей, такие как UID, GID, Login Shell, Home Directory. Поэтому схему необходимо расширить, добавив в нее возможность хранения нужных нам сведений. Для этого существует два варианта: первый – это бесплатный пакет Microsoft под названием Windows Services for UNIX 3.5 (SFU), второй – это использование последней версии семейства серверов 2003 – Windows Server 2003 R2. Мы будем использовать второй вариант. Если ваши контроллеры домена и файловые серверы уже работают под релизом R2, можно смело пропустить несколько абзацев, касающихся обновления стандартного Windows Server 2003 до R2.
Windows Server 2003 R2 – версия Windows Server 2003, имеющая встроенные компоненты Windows Services for UNIX (SFU), необходимые нам при создании гетерогенной среды для хранения атрибутов UNIX-пользователей в схеме Active Directory. Релиз R2 включает в себя два важных компонента:
- Subsystem for UNIX-based Applications (SUA);
- Identity Management for UNIX (IMU).
SUA помогает UNIX-приложениям работать под Windows так, как будто они работают в Linux или UNIX. Это выходит за рамки нашей статьи, поэтому мы сфокусируем внимание на компоненте IMU, которая содержит нужные в дальнейшем службы – Administration Components, Password Synchronization, Server for NIS, их установку мы сейчас и рассмотрим.
Необходимо отметить, что возможно два сценария обновления, в зависимости от того, установлен у вас пакет SFU или нет. Мы будем рассматривать вариант, при котором SFU не установлен. В противном случае рекомендую посетить англоязычный ресурс http://www.winlinanswers.com/book/resources.php?id=5, где вы найдете полное описание варианта обновления до R2 с установленным SFU.
Вставив CD#2 с дистрибутивом Windows Server 2003 R2 и согласившись на продолжение установки, вы увидите сообщение об ошибке с описанием, что установка не может быть продолжена, поскольку версия схемы данного домена не совместима с R2. Поэтому сначала необходимо выполнить следующую команду:
X:CMPNENTSR2ADPREPadprep.exe /forestprep
где X – буква, соответствующая CD с дистрибутивом. После чего можно начать установку компонентов R2, выполнив файл R2auto.exe из корневой директории CD.
После установки компонентов R2 нужно в панели управления в разделе установки и удаления программ выбрать пункт «Windows Components», затем найти строчку «Active Directory Services» и в детализации выбрать установку «Identity Management for UNIX».
После завершения установки необходимо будет перезагрузить сервер.
Настройка атрибутов будущих UNIX-пользователей и групп
Откройте оснастку Active Directory User and Computers и вызовите свойства любого пользователя. Появилась новая закладка UNIX Attributes, в которой возможно назначить свойства UNIX-пользователя (см. рисунок). Для начала нам нужно создать несколько UNIX-групп, которые пригодятся нам в дальнейшем.
Свойства UNIX-пользователя — UNIX attributes
Создайте группу UNIXusers – это будет группа по умолчанию для всех UNIX-пользователей. Для этого создайте обычным способом группу нужного вам вида (Domain Local или Global), затем откройте свойства данной группы и перейдите на вкладку «UNIX Attributes». В строке «NIS Domain» выберите ваш домен, после чего группе автоматически будет присвоен GID. Если он не устраивает вас по какой-то причине, можете прописать новый идентификатор вручную. При создании следующих групп GID будет автоматически увеличиваться на единицу.
Аналогичным способом создайте группу UNIXadmins, которая затем будет указана в настройках конфигурационного файла /etc/sudoers как группа, членам которой разрешено выполнять sudo на рабочих станциях с Kubuntu.
Создайте еще одну группу и назовите ее audio, присвоив ей вручную GID 29. Дело в том, что в Linux есть одна особенность – файлы аудиоустройств, как правило, имеют общую группу таким образом, что возможность работы с аудио доступна только владельцам файлов и членам этой группы. В эту группу потом добавим всех пользователей, чтобы у них была возможность использовать наушники и микрофон.
Теперь выберите одного из тех пользователей вашего домена, которому вы хотите присвоить UNIX-атрибуты. В свойствах откройте вкладку «UNIX Attributes», так же как и для группы, выберите имя вашего домена в строке «NIS Domain», и в строке «Primary group name/GID» выберите группу по умолчанию UNIXusers.
Если необходимо по каким-то причинам изменить параметры Login Shell и Home Directory, можно это сделать. UID присвоится автоматически, но при желании можно прописать его вручную.
После присвоения UNIX-атрибутов всем нуждающимся в них пользователям вернемся к группам. Открыв свойства группы UNIXusers, на вкладке «UNIX Attributes» нажмите кнопку «Add» и добавьте туда всех пользователей.
Аналогично поступим с группой audio, а в группу UNIXadmins внесем только тех пользователей, кому разрешено выполнение sudo на рабочих станциях.
Теперь остается только создать нового пользователя, например unixldap, и присвоить ему соответствующие атрибуты. Учетная запись этого пользователя будет использоваться при регистрации и поиске в LDAP с Linux-десктопа, поэтому её необходимо максимально ограничить в правах, допустим, явно запретив доступ ко всем ресурсам файлового сервера и т. д.
На этом работы с оснасткой «Active Directory User and Computers» закончены.
Немного о настройке файлового сервера для работы с UNIX-клиентами
В данном примере монтирование домашних каталогов пользователей осуществляется с использованием CIFS (Common Internet File System).
Если для каких-нибудь задач вам потребуется работа с NFS (Network File System), то для обеспечения доступа к файловым ресурсам вашего Windows-сервера с Linux-десктопов необходимо будет установить на сервер пакет Microsoft Services for NFS. Привожу краткое руководство, как это сделать.
Зайдите в панель управления, затем в разделе установки и удаления программ выберите пункт «Windows Components», там войдите в «Other Network File and Print Services» и в детализации выберите установку «Microsoft Services for NFS». Из данного пакета необязательными к установке являются два последние пункта: Server for NFS Authentication и User Name Mapping. После установки данных служб пользователи с рабочих станций под управлением Linux получат доступ к файловым ресурсам данного сервера, используя NFS.
Настройка рабочей станции с Kubuntu
Теперь приступим к самой большой части работы – настройке Kubuntu. Сначала выполните установку Kubuntu 7.10 на рабочую станцию, после чего установите все необходимые обновления, например, используя встроенный в KDE менеджер обновлений Adept Updater.
Также рекомендуется изменить параметры входа в систему для KDE (в других экранных менеджерах могут быть отличия) – открываем меню «System Settings», переходим на закладку «Advanced», там выбираем «Менеджер входа в систему», и, войдя в административный режим, отключаем опцию «Показывать список» на вкладке «Пользователи». Если этого не сделать, система при входе будет отображать всех UNIX-пользователей вашего домена, что совершенно ни к чему.
Для корректной работы протокола Kerberos, который будет использоваться для аутентификации в нашей гетерогенной среде, крайне важным моментом является синхронизация времени рабочей станции с контроллером домена.
Поэтому первым пунктом настроим синхронизацию времени. Для этого в файле /etc/default/ntpdate внесем следующие изменения:
NTPSERVERS=»dc.domain.ru»
При следующей перезагрузке ПК будет синхронизировать время с контроллером домена, а пока проведем синхронизацию вручную, выполнив следующую команду:
$sudo ntpdate -s dc.domain.ru
Указываем FQDN для настраиваемой рабочей станции в файле /etc/hosts:
127.0.0.1 workstation.domain.ru localhost workstation
Проверьте доступность машины по FQDN командой:
ping workstation.domain.ru –с 4
Теперь необходимо установить и настроить поддержку Kerberos. Устанавливаем нужные пакеты:
$sudo apt-get install krb5-user libpam-krb5 krb5-config libkrb53 krb5-doc
Если система выдала ошибку:
dpkg was interrupted, you must manually run dpkg –-configure –a to correct this problem
последуйте совету подсказки, наберите:
$sudo dpkg –-configure –a
В процессе вас попросят принять решение о замене файла /etc/qt3/qt_plugins_3.3rc – согласитесь с вариантом по умолчанию, оставьте текущую версию без изменений. Данная ошибка иногда проявляется в версии 7.10 после первой установки обновлений.
И приступаем к настройке – внесем изменения в файл /etc/krb5.conf:
[libdefaults]
default_realm = DOMAIN.RU
# DOMAIN.RU пишется обязательно ЗАГЛАВНЫМИ БУКВАМИ
ticket_lifetime = 24000
# The following krb5.conf variables are only for
# MIT Kerberos
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
DOMAIN.RU = {
kdc = dc.domain.ru
# kdc – key distribution center – контроллер домена
admin_server = dc.domain.ru
default_domain = domain.ru
}
[domain_realm]
.domain.ru = DOMAIN.RU
domain.ru = DOMAIN.RU
[login]
krb4_convert = true
krb4_get_tickets = false
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
После настройки Kerberos мы можем проверить его работоспособность следующими командами:
$kinit user@DOMAIN.RU
Командой kinit мы осуществляем запрос на сервер kdc на получение билета. Если система в ответ не выдала ошибок, значит, все в порядке и можно просмотреть билет командой klist:
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: user@DOMAIN.RU
Valid starting Expires Service principal
03/15/08 15:15:55 03/15/08 21:55:55 krbtgt/ DOMAIN.RU@DOMAIN.RU
Удалить билет можно командой kdestroy.
Если при выполнении команды kinit система выдала ошибку, проверьте настройки DNS, большинство проблем возникает именно из-за некорректной работы данной службы.
Далее на очереди установка и настройка поддержки LDAP:
$sudo apt-get install libnss-ldap libpam-ldap
При установке этих модулей вам сразу будет предложено настроить параметры клиента ldap, проигнорируйте это предложение, т.к. этих настроек будет недостаточно для корректной работы и все конфигурационные файлы надо настраивать вручную.
Изменяем файл /etc/ldap.conf:
# LDAP Defaults
# See ldap.conf(5) for details
# This file should be world readable but not world writable
uri ldap://dc.domain.ru
base dc=domain,dc=ru
ldap_version 3
scope sub
# Следующие две строки содержат реквизиты учетной записи
# unixldap, необходимые для доступа к схеме AD
binddn cn=unixldap,cn=Users,dc=domain,dc=ru
bindpw password
bind_timelimit 2
bind_policy soft
# bind_policy soft указывает, что при неудачном подключении
# к LDAP не пытаться переподключиться при отсутствии
# данной строки система не сможет загрузиться
idle_timelimit 2
# PAM options with group-based access configuration:
pam_filter objectClass=posixAccount
pam_login_attribute uid
# nsswitch.conf options:
nss_base_password cn=Users,dc=domain,dc=ru?sub
nss_base_group cn=Users,dc=domain,dc=ru?sub
# Далее прописываем mapping POSIX атрибутов,
# т.к. в схему AD они не добавляются
nss_map_objectclass posixAccount User
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute gecos cn
nss_map_objectclass posixGroup Group
ssl no
# sudo options:
sudoers_base cn=UNIXadmins,cn=Users,dc=domain,dc=ru
# debug 257
Опцию debug можно будет включить на время отладки, если будут проблемы.
Также необходимо внести изменения в файл /etc/ldap/ldap.conf, который требуется для работы некоторых утилит, например ldapsearch. Это файл может состоять всего из двух строк:
BASE dc=domain,dc=ru
URI ldap://dc.domain.ru
Пришла очередь установить компоненты, которые позволят монтировать личные папки пользователей, располагающиеся на сервере Windows. Это пакеты smbfs и pam_mount. Первый позволяет понимать windows share, а второй отвечает за автоматический mount/umount при процедурах login/logout. Устанавливаем:
$sudo apt-get install smbfs
А вот установка pam_mount не отличается простотой. Дело в том, что при установке с помощью команды «apt-get install» по умолчанию установится версия 0.18, которая не отличается дружелюбием по отношению к файловой системе cifs (хотя заявлено, что поддерживает), поэтому нам нужно установить более новую версию, например 0.32, а для этого придется обновить много библиотек и установить несколько пакетов. Итак, приступим. Скачайте следующие установочные файлы и установите их именно в такой последовательности:
- tzdata_2008a-0ubuntu0.7.10_all.deb
- libc6_2.7-6_i386.deb
- libhx10_1.10.2-2_i386.deb
- libssl0.9.8_0.9.8g-4ubuntu1_i386.deb
Теперь привычным способом установим пакет libxml-writer-perl:
$sudo apt-get install libxml-writer-perl
И только после всех описанных манипуляций скачиваем и устанавливаем пакет libpam-mount_0.32-4_i386.deb.
Конфигурационный файл модуля pam_mount называется pam_mount.conf.xml и находится в каталоге /etc/security. Я приведу здесь только измененные части файла, т.к. целиком его приводить смысла не имеет.
Для начала включим отладку:
<debug enable=»1″ />
Ниже перед закомментированным абзацем с описанием mntoptions вставим строчку:
<mntoptions allow=»*» />
И наконец после строки:
<pmvarrun>pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>
вставляем свои строки с указанием следующих опций монтирования:
<volume
user=»*»
invert=»1″
fstype=»cifs»
server=»fileserver.domain.ru»
path=»share/%(USER)»
options=»iocharset=utf8,dir_mode=0700,file_mode=0600″
mountpoint=»/home/%(USER)/data»
/>
Получается, что при входе в систему в домашнем каталоге пользователя будет создаваться папка /data, куда будет монтироваться его сетевая папка с сервера (\fileserver.domain.rushareusername).
Следующим шагом позаботимся о корректной работе sudo для соответствующих пользователей. Для этого внесем следующие изменения в файл /etc/sudoers:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%UNIXadmins ALL=(ALL) ALL
И еще изменим файл /etc/pam.d/sudo для корректной работы kdesu (запуск административных приложений в KDE):
#%PAM-1.0
auth sufficient pam_krb5.so
auth sufficient pam_ldap.so use_first_pass
auth sufficient pam_unix.so use_first_pass
auth required pam_deny.so
#@include common-auth
#@include common-account
Теперь нам предстоит настроить модули PAM (Pluggable Authentication Modules) – подключаемые модули аутентификации. Описание принципов работы и синтаксис оставим за рамками нашей статьи, все интересующиеся без труда найдут его в сети. Изменениям подвергнутся несколько конфигурационных файлов, располагающихся в каталоге /etc/pam.d. Начнем с файла /etc/pam.d/common-account:
#account required pam_login_access.so
account required pam_ldap.so ignore_authinfo_unavail ignore_unknown_user
account required pam_unix.so
Теперь редактируем файл /etc/pam.d/common-auth:
auth optional pam_mount.so
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_ldap.so ignore_authinfo_unavail ignore_unknown_user use_first_pass
auth required pam_unix.so nullok_secure
auth required pam_deny.so
Следом вносим изменения в файл /etc/pam.d/common-password, который начнет работать только при смене пароля (по истечении срока или при запуске утилиты passwd):
password sufficient pam_unix.so obscure md5
password sufficient pam_ldap.so
Переходим к файлу /etc/pam.d/common-session:
session optional pam_mount.so
session required pam_unix.so
session optional pam_foreground.so
Необходимо отметить, что во всех модулях, использующих библиотеку pam_mount, строчка с описанием ее использования должна быть на первом месте, к сожалению, pam_mount не умеет принимать пароль через опции use_first_pass или try_first_pass, поэтому строка просто не отработает, как следствие, сетевая папка не будет смонтирована.
Необходимо отметить, что указанные конфигурационные файлы работоспособны при осуществлении входа в систему через интерфейс KDE. Для использования консольного входа в систему (а также удаленного входа по ssh) нужно внести некоторые изменения, о которых подробно будет рассказано в описании настроек сетевых сервисов для сквозной авторизации.
На этом настройка модулей PAM завершена. Осталось внести изменения в последний, очень важный конфигурационный файл: /etc/nsswitch.conf:
group: files ldap
hosts: files dns
networks: files
passwd: files ldap
shells: files
sudoers: files ldap
Теперь остается только завершить сеанс и войти в систему под доменным UNIX-пользователем. При неудачной попытке ищите ошибки в log-файлах.
Настройка сетевых сервисов и служб для прозрачной и сквозной авторизации будет рассмотрена в следующий раз.
Мой мир
Вконтакте
Одноклассники
Google+
Введение
Ввод компьютера под управлением Astra Linux в домен Windows Active Directory или в домен Samba может быть выполнен двумя способами:
- С использованием инструментария winbind:
- графический инструмент fly-admin-ad-client;
- инструмент командной строки astra-winbind;
- С использованием инструментария sssd:
- графический инструмент fly-admin-ad-sssd-client;
- инструмент командной строки astra-ad-sssd-client;
Далее рассматривается установка и использование этих инструментов. Рекомендации по выбору одного из двух способов ввода в домен не входят в задачи данной статьи. Дополнительную информацию про winbind и sssd см. Сравнение winbind и sssd.
Операционная система Windows 2003 использует версию v1 протокола SMB (SMBv1) и не поддерживает протоколы SMBv2 выше. В современных обновлениях Astra Linux использование версии протокола SMBv1 по-умолчанию отключено, так как эта версия устарела и небезопасна. В качестве контроллера домена рекомендуется Windows AD использовать версии Windows поддерживающие протокол SMBv2. При невозможности обновления Windows для подключения к домену Windows 2003 следует использовать winbind, подробнее про процедуру см. : Особенности ввода в домен Windows AD 2003.
Конфигурация стенда
Имя компьютера (hostname) | Операционная система | Роли компьютера | IP-адрес |
---|---|---|---|
dc01.example.com | Windows Server 2008R2 | Контроллер домена; DNS сервер | Статический (далее для примера используется IP-адрес 192.168.5.7) |
astra01 | Astra Linux Special Edition | Рабочая станция, член домена | Статический или динамически назначаемый IP-адрес |
Настройка системных часов и сетевых подключений
Для успешного ввода Astra Linux в домен AD на вводимой машине перед вводом в домен необходимо:
- Обеспечить синхронизацию часов на контроллере домене и вводимом компьютере (см. Службы синхронизации времени в Astra Linux);
- Указать IP-адрес DNS-сервера. таким образом, чтобы разрешалось имя контроллера домена. Обычно в качестве адреса DNS-сервера используется IP-адреса самого контроллера домена. Подробнее про настройку сети см. Настройка сетевых подключений в Astra Linux.
Установка пакетов
В Astra Linux присутствует графическая утилита для ввода компьютера в домен Active Directory. Установить ее можно Графический менеджер пакетов synaptic или из командной строки командой:
sudo apt install fly-admin-ad-client
При установке пакета fly-admin-ad-client будет автоматически установлен инструмент командной строки astra-winbind.
- Открыть «Панель управления»:
- Выбрать раздел «Сеть» → «Настройка клиента Active Directory»:
- Заполнить все поля и нажать кнопку «Подключиться»:
Для входа в систему доменным пользователем можно использовать формат имени доменного пользователя «username@example.com» или «EXAMPLEusername».
Для ввода с помощью SSSD в домен Windows 2003 компьютера под управлением Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) без установленных оперативных обновлений или с установленным оперативным обновлением БЮЛЛЕТЕНЬ № 2021-1126SE17 (оперативное обновление 1.7.1) необходимо использовать пакет realmd_0.16.3-2+b1 или пакет realmd с более новой версией. В более поздних обновлениях нужный пакет входит в состав репозиториев, и отдельной установки не требует.
Для установки пакета:
- Скачать пакет с помощью web-браузера (по умолчанию пакет будет сохранен в каталоге Загрузки);
-
Установить пакет:
sudo apt install Загрузки/realmd_0.16.3-2+b1_amd64.deb
Установка пакетов
Установить графический инструмент fly-admin-ad-sssd-client можно используя Графический менеджер пакетов synaptic или из командной строки командой:
sudo apt install fly-admin-ad-sssd-client
При установке графического инструмента будет автоматически установлен инструмент командной строки astra-ad-sssd-client.
После установки пакет доступен в графическом меню: «Пуск» — «Панель управления» — «Сеть» — «Настройка клиента SSSD Fly».
Для ввода компьютера Astra Linux в домен Active Directory нужно запустить инструмент, после запуска инструмента указать имя домена, имя и пароль администратора и нажать кнопку «Подключиться»:
Инструмент командной строки astra-winbind
Установка пакетов
Инструмент командной строки astra-winbind автоматически устанавливается при установке графического инструмента fly-admin-ad-client. При необходимости работать в командной строке без использования графики инструмент может быть установлен отдельно:
sudo apt install astra-winbind
Ввод в домен с помощью astra-winbind
Операционная система Windows 2003 использует версию v1 протокола SMB (SMBv1) и не поддерживает протоколы SMBv2 выше. В современных обновлениях Astra Linux использование версии протокола SMBv1 по-умолчанию отключено, так как эта версия устарела и небезопасна. В качестве контроллера домена рекомендуется Windows AD использовать версии Windows поддерживающие протокол SMBv2. При невозможности обновления Windows для подключения к домену Windows 2003 следует использовать winbind, подробнее про процедуру см. : Особенности ввода в домен Windows AD 2003.
Ввод компьютера в домен может быть выполнен командой:
sudo astra-winbind -dc dc01.example.com -u Администратор
где:
- -dc dc01.example.com — указание контроллера домена;
- -u Администратор — указание имени администратора домена;
Подсказка по команде:
sudo astra-winbind -h Usage: astra-winbind <ключи> ключи: -h этот текст -dc имя контроллера домена. если FQDN, ключ -d можно опустить -d домен. если отсутствует, берется из файла /etc/resolv.conf -g группа. если отсутствует, берется из домена -n сервер времени. если нет, используется контроллер домена -y отключает запрос подтверждения -i информация по текущему подключению -u логин администратора домена -px получает пароль администратора домена из stdin -p пароль администратора домена (небезопасно) -s разрешить и запустить службу подключения к домену -S запретить и остановить службу подключения к домену -l вывести компьютер из домена примеры: полное имя контроллера домена и отключение запроса подтверждения astra-winbind -dc astra01.atws.as -u admin -p password -y сторонний сервер времени и запрос пароля в процессе astra-winbind -dc astra01 -d atws.as -n 192.168.5.7 -u admin передача пароля через stdin, домен ищется в resolv.conf echo | ./astra-winbind -dc astra01 -u admin -px -y информация о текущем домене astra-winbind -i
Особенности ввода в домен Windows AD 2003
При вводе в домен Windows AD 2003 первая попытка вода окончится неудачей. Для завершения процедуры ввода:
-
Сохранить копию созданного при первой попытке ввода в домен конфигурационного файла /etc/samba/smb.conf, например:
cp /etc/samba/smb.conf /tmp/smb.conf
-
Добавить в секцию [global] сохраненной копии параметр client min protocol = NT1:
sed -i -e ‘/^[global]/a client min protocol = NT1’ «/tmp/smb.conf»;
-
Выполнить ввод в домен используя модифицированный файл конфигурации:
astra-winbind -dc astra-w2003.ad2.loc -u admin -p 1 -y —par «–configfile=/tmp/smb.conf»
-
Заменить созданный при второй попытке ввода конфигурационный файл /etc/samba/smb.conf сохраненной модифицированной копией:
sudo mv /tmp/smb.conf /etc/samba/smb.conf
-
Перезагрузить компьютер:
sudo systemctl restart
Установка пакетов
Инструмент командной строки astra-ad-sssd-client автоматически устанавливается при установке графического инструмента fly-admin-ad-sssd-client. При необходимости работать в командной строке без использования графики инструмент может быть установлен отдельно:
sudo apt install astra-ad-sssd-client
При вводе компьютера в домен с помощью astra-ad-sssd-client также будет настроен сервер samba. См. Samba.
Ввод компьютера в домен может быть выполнен командой:
sudo astra-ad-sssd-client -d example.com -u Администратор
где:
- -d example.com — указание имени домена;
- -u Администратор — указание имени администратора домена;
Примерный диалог при выполнении команды:
compname = astra01 domain = example.com username = admin введите пароль администратора домена: ok продолжать ? (yN) y настройка сервисов... Завершено. Компьютер подключен к домену. Для продолжения работы, необходимо перезагрузить компьютер!
Для завершения подключения требуется перезагрузить компьютер:
sudo reboot
Подсказка по команде astra-ad-sssd-client:
sudo astra-ad-sssd-client -h Usage: astra-ad-sssd-client <ключи> ключи: -h,--help этот текст -d домен. если отсутствует, берется из hostname.resolv.conf -y отключает запрос подтверждения -i информация по текущему подключению -u логин администратора домена -n сервер времени. -px получает пароль администратора домена от внешнего сценария через перенаправление стандартного ввода (stdin) -p пароль администратора домена -U удаление --par указать параметры вручную
После перезагрузки проверить статус подключения можно следующими способами:
-
Получить билет Kerberos от имени администратора домена:
kinit admin@dc01.example.com
-
Проверить статус подключения:
sudo astra-ad-sssd-client -i
Примеры
Подключение к домену domain.net с именем администратора admin и (небезопасным!) указанием пароля администратора, без запроса подтверждения:
sudo astra-ad-sssd-client -d domain.net -u admin -p 12345678 -y
Подключение к домену domain.net с именем администратора admin и с использованием пароля администратора из файла /root/pass, без запроса подтверждения:
cat /root/pass | sudo astra-ad-sssd-client -d domain.net -u admin -px -y
Подключение к домену domain.net без запроса подтверждения:
sudo astra-ad-sssd-client -d domain.net -y
Получение информации о текущем домене
sudo astra-ad-sssd-client -i
Удаление данных подключения:
sudo astra-ad-sssd-client -U
Для удаления компьютера из домена (удаление механизма авторизации) используйте команду:
sudo astra-ad-sssd-client -U
Ввести linux сервер в домен windows не так сложно, как кажется на первый взгляд. В этом деле нам поможет samba. Она конечно может помочь еще во множестве других дел, но пока ограничения введением linux сервера в домен windows.
Домен Windows 2003, cервер Ubuntu 9.10 с уже настроенной сетью и доступом по SSH (смотреть предыдущий пост)
имя домена: DOMAIN
полное имя домена: DOMAIN.LOCAL
учетная запись администратора домена: admin
главный контроллер домена: PDC1
имя linux сервера: SERVER
Задача
Ввести linux сервер в домен Windows.
Решение
для того что бы каждый раз нам не приходилось набирать sudo будем работать под root с ОСОБОЙ ВНИМАТЕЛЬНОСТЬЮ!!!
$ sudo -i
Установим необходимые пакеты
В процессе установки krb5-user надо будет указать kerberos сервер нашей сети, обычно это контролер домена (PDC1.DOMAIN.LOCAL)
# sudo apt-get update
# apt-get install samba winbind krb5-user
Редактируем файл /etc/krb5.conf (Важно …большие буквы!)
# cp /etc/krb5.conf /etc/krb5.conf.orig не забываем о резервной копии
# cp /dev/null /etc/krb5.conf что бы не читать много букв, удаляем все содержимое файла (внимание! сначала копия, потом удаляем, не наоборот)
# nano /etc/krb5.conf редактируем в редакторе nano
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
ticket_lifetime = 24000
default_realm = DOMAIN.LOCAL
dns_lookup_realm = true
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
[realm]
DOMAIN.LOCAL = {
kdc = PDC1
admin-server = PDC1
default_domain = DOMAIN.LOCAL
}
[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb5_convert = false
}
Редактируем /etc/samba/smb.conf
# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
# cp /dev/null /etc/samba/smb.conf
# nano /etc/samba/smb.conf
[global]
security = ads
netbios name = SERVER
realm = DOMAIN.LOCAL
password server = PDC1.DOMAIN.LOCAL
workgroup = DOMAIN
idmap uid = 10000 — 20000
idmap gid = 10000 — 20000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
domain master = no
client use spnego = yes
# Для корректного отображения русских символов
dos charset = 866
unix charset = UTF-8
display charset = koi8-r
Редактируем файлы
/etc/nsswitch.conf
/etc/pam.d/common-account
/etc/pam.d/common-auth
/etc/pam.d/common-password
/etc/pam.d/common-session
# cp /etc/nsswitch.conf /etc/nsswitch.conf.orig
#cp /dev/null /etc/nsswitch.conf
# nano /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
# cp /etc/pam.d/common-account /etc/pam.d/common-account.orig
# cp /dev/null /etc/pam.d/common-account
# nano /etc/pam.d/common-account
account sufficient pam_winbind.so
account required pam_unix.so
# cp /etc/pam.d/common-auth /etc/pam.d/common-auth.original
# cp /dev/null /etc/pam.d/common-auth
# nano /etc/pam.d/common-auth
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
# cp /etc/pam.d/common-password /etc/pam.d/common-password.orig
# cp /dev/null /etc/pam.d/common-password
# nano /etc/pam.d/common-password
password required pam_unix.so nullok obscure min=4 max=50 md5
# cp /etc/pam.d/common-session /etc/pam.d/common-session.orig
# cp /dev/null /etc/pam.d/common-session
# nano /etc/pam.d/common-session
session required pam_unix.so
session optional pam_foreground.so
session required pam_mkhomedir.so umask=0022 skel=/etc/ske1
Перезапускаем samba
# /etc/init.d/samba restart
Инициализируем kerberos (необходимо будет ввести пароль доменного админа)
# kinit admin@DOMAIN.LOCAL (важно, домен большими буквами!)
Для проверки, утилитой klist можно просмотреть кеш kerberos в нем должен быть билет для пользователя admin
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin@DOMAIN.LOCAL
Если всё нормально, то заводим сервер в домен.
# net ads join -U admin
Enter admin’s password:
Using short domain name — DOMAIN
Joined ‘SERVER’ to realm ‘domain.local’
Вот и всё, завели linux сервер в домен windows:)
Для проверки можно воспользоваться командой wbinfo
Должно выдать всех пользователей домена
#wbinfo -u
Должно выдать все группы домена
#wbinfo -g
Содержание
- Ввод в домен на базе Windows 2003
- Содержание
- Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux [ править ]
- Задача [ править ]
- Дано [ править ]
- Устанавливаем необходимые пакеты [ править ]
- Настраиваем сетевое соединение [ править ]
- Настраиваем сервисы самбы [ править ]
- Настраиваем синхронизацию времени с нашим контроллером домена [ править ]
- Настраиваем службу аутентификации для получения билетов Kerberos [ править ]
- Вводим в домен [ править ]
- Добавляем пользователей с административными привилегиям (sudo) [ править ]
- Настраиваем автомонтирование сетевых ресурсов [ править ]
- Библиография [ править ]
- Примечание [ править ]
- KDesktop [ править ]
- Доступ к локальным группам [ править ]
- Переустановка [ править ]
- Смена имени хоста [ править ]
- Два IP-адреса [ править ]
- Дополнения [ править ]
- Настройка LightDM [ править ]
- ActiveDirectory/Login
- Содержание
- Подготовка [ править ]
- Установка пакетов [ править ]
- Синхронизация времени [ править ]
- Ввод в домен в Центре управления системой [ править ]
- Ввод в домен в командной строке [ править ]
- Настройка SSSD [ править ]
- Проверка работы [ править ]
- Примечания [ править ]
- Настройка окна входа [ править ]
- Настройка LightDM [ править ]
- Отображение глобальных групп на локальные [ править ]
- Установка модуля ролей [ править ]
- Настройка ролей и привилегий [ править ]
- Дополнительные роли [ править ]
- Подключение файловых ресурсов [ править ]
- Через gio [ править ]
- Через pam_mount [ править ]
- Через autofs [ править ]
- Основная статья AutoFS [ править ]
- Для дистрибутивов c KDE [ править ]
- Групповые политики [ править ]
- SSSD [ править ]
- SSSD/AD
- Содержание
- Подключение к домену [ править ]
- Настройки сети [ править ]
- Настройки kerberos [ править ]
- Настройки samba [ править ]
- Подключение к домену [ править ]
- Настройка SSSD [ править ]
- Установка sssd-модуля [ править ]
- Настройка авторизации [ править ]
- Настройка аутентификации [ править ]
- Запуск и проверка сервиса sssd [ править ]
- Подключение файловых ресурсов [ править ]
- Через pam_mount [ править ]
- Домен/Windows/Manual
- Содержание
- Настройка сервера [ править ]
- Создание групп и выдача административных привилегий [ править ]
- Права доступа [ править ]
- Скрипт при входе [ править ]
- Решение проблем [ править ]
- Если что-то пошло не так. [ править ]
- Отладка Samba [ править ]
- Смена имени сервера Samba [ править ]
- Нюансы реализации [ править ]
- Известные проблемы [ править ]
- Как ввести компьютер с ОС АЛЬТ в домен Active Directory и сделать так, чтобы Linux-администратору было удобно с ним работать
- Компьютер подготовлен к вводу в домен, у него есть все необходимые данные.
- Появляется запрос на подтверждение полномочий пользователя на ввод в домен компьютера.
- Появляется сообщение об успешном вводе в домен.
- Проверка успешного ввода в домен.
- Как еще можно быстро и просто включить компьютер в домен?
- Ограничение №1. Сопоставление доменных групп безопасности с локальными
- Ограничение №2. Подключение сетевых ресурсов
- Расчёт стоимости
Ввод в домен на базе Windows 2003
Содержание
Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux [ править ]
Задача [ править ]
Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux.
Дано [ править ]
Устанавливаем необходимые пакеты [ править ]
Настраиваем сетевое соединение [ править ]
Проверяем его доступность по ip-адресу:
Проверяем его доступность по имени узла:
Для того, чтобы узел отвечал по имени, необходимо указать домен поиска OFFICE.DOMEN.LOCAL. В Центре Управления Системой это указывается в настройках сетевого интерфейса в поле Домены поиска. Не забываем нажать Применить.
Проверяем его доступность по имени узла:
В файл /etc/hosts добавляем запись о нашей машине:
И соответственно в домен машину мы ввести не сможем. Ищем файл /etc/nsswitch.conf, в нем строку с hosts:
У по умолчанию она имеет вид:
И приводим ее к такому виду:
Сохраняем изменения и проверяем:
Настраиваем сервисы самбы [ править ]
Теперь необходимо включить в автозапуск необходимые службы. Выполним следующие команды от рута:
Делаем то же самое для winbind:
Запускаем сервис самба:
Чтобы сервис swat запускался автоматически: в файле /etc/xinetd.d/swat меняем значение disable с yes на no и перезапускаем службу:
Запускаем swat в браузере: http://localhost:901 (либо же правим /etc/samba/smb.conf соотвественно)
Во вкладке GLOBALS ставим следующие значения:
Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный):
Снова подтверждаем изменения (сохранить изменения). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).
Настраиваем синхронизацию времени с нашим контроллером домена [ править ]
Проверяем уровни запуска службы:
Добавляем в конфигурационный файл /etc/ntpd.conf запись о сервере времени для синхронизации, все остальное комментируем:
Запускаем синхронизацию времени:
И только после этого запускаем службу:
Настраиваем службу аутентификации для получения билетов Kerberos [ править ]
Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf. Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть):
Пробуем получить билет авторизации:
Если все прошло хорошо, в ответ на этот запрос вы ответа не получите.
Проверяем наличие билета командой klist, вывод должен быть примерно такой:
Правим /etc/nsswitch.conf примерно до такого вида:
Чтобы изменения в конфиге /etc/nsswitch.conf вступили в силу без перезагрузки, нужно от рута дать команду:
Вводим в домен [ править ]
Для ввода в домен необходимо дать команду:
Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо оставить /etc/pam.d/gdm или /etc/pam.d/lightdm в прежнем виде:
(Для KDE4 это файл /etc/pam.d/kde4)
А /etc/pam.d/system-auth-winbind к виду (если его нет, то создать):
И /etc/pam.d/system-auth-use_first_pass-winbind к виду(если его нет, то создать):
Не забываем переключить авторизацию на winbind
С такими конфигами будет работать авторизация из gdm, gnome-screensaver, ssh.
Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить один ньюанс. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем.
Добавляем пользователей с административными привилегиям (sudo) [ править ]
Разрешаем всем вызывать sudo:
Разрешаем группе администраторов LinuxAdmins (должна быть создана) повышать свои привилегии без запроса пароля:
Настраиваем автомонтирование сетевых ресурсов [ править ]
Устанавливаем smbnetfs, samba, samba-client, fuse-smb.
Создаем /etc/fuse.conf и добавляем запись:
Добавляем в /etc/modules запись:
Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/
Копируем /etc/samba/smb.conf в /home/%username%/.smb/
Добавляем пользователя в группу fuse.
Создаем в домашнем каталоге каталог (например) /home/%username%/net
Создаем скрипт запуска в удобном для нас месте (например) /home/%username%/.smb/net со следующим содержанием:
Библиография [ править ]
Инструкция составлена с применением следующих ресурсов:
Примечание [ править ]
KDesktop [ править ]
На KDesktop мне не удалось настроить вход в домен AD используя
Взамен этого можно сделать некоторые ручные манипуляции
Доступ к локальным группам [ править ]
Чтобы все доменные пользователи были включены в определенные локальные группы (могли переключаться в root, запускать VirtualBOX и проч.) нужно добавить в /etc/security/group.conf
в конф. файл входа в систему( для KDE это /etc/pam.d/kde4)
Переустановка [ править ]
После переустановки системы (при сохранении раздела /home) необходимо выставить владельца домашнего каталога доменного пользователя (владелец меняется)
Смена имени хоста [ править ]
Если нужно сменить имя хоста, править HOSTNAME в файле /etc/sysconfig/network
Два IP-адреса [ править ]
Замечены проблемы со входом доменного пользователя при наличии двух IP-адресов. На этапе первого входа пользователя лучше от второго IP временно отказаться.
Дополнения [ править ]
Настройка LightDM [ править ]
В /etc/lightdm/lightdm.conf раскомментируйте строку в группе [SeatDefaults] :
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.
Также полезно выключить выбор языка. В файле /etc/lightdm/lightdm-gtk-greeter.conf в группе [greeter] укажите
В новых версиях lightdm-gtk-greeter можно указать кнопки явно:
Источник
ActiveDirectory/Login
Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под Samba в режиме AD DC). Устаревшая инструкция: Ввод в домен на базе Windows 2003
Параметр | Значение |
---|---|
Имя домена | SCHOOL.ALT |
Рабочая группа | SCHOOL |
Имя компьютера в Netbios | WS |
Имя пользователя-администратора | Administrator |
Пароль администратора | Pa$$word |
Содержание
Подготовка [ править ]
Установка пакетов [ править ]
С версии alterator-auth-0.31-alt1
Возможно, следует обновить установленный дистрибутив из репозитория.
Синхронизация времени [ править ]
С версии alterator-auth 0.28 синхронизация времени производится автоматически с контроллером домена.
Для более ранних версий:
Способ 1: Через net time [ править ]
Способ 2: По протоколу RFC 867 [ править ]
На сервере включается через xinetd daytime-tcp [1] :
А на клиенте — служба settime-rfc867 :
Способ 3: Через Центр управления системой → Дата и время [ править ]
Способ 4: Через ntpdate [ править ]
Ввод в домен в Центре управления системой [ править ]
В Центре управления системой перейдите в раздел Пользователи → Аутентификация
Для ввода компьютера в Active Directory потребуется установить пакет task-auth-ad-sssd и все его зависимости.
Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».
Ввод в домен в командной строке [ править ]
Настройка SSSD [ править ]
Проверка работы [ править ]
Примечания [ править ]
Настройка окна входа [ править ]
Настройка LightDM [ править ]
В /etc/lightdm/lightdm.conf раскомментируйте строку в группе [SeatDefaults] :
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.
Также полезно выключить выбор языка. В файле /etc/lightdm/lightdm-gtk-greeter.conf в группе [greeter] укажите
В новых версиях lightdm-gtk-greeter можно указать кнопки явно:
Полный перечень доступных кнопок:
Отображение глобальных групп на локальные [ править ]
Установка модуля ролей [ править ]
Настройка ролей и привилегий [ править ]
Добавляем роль локальных администраторов:
Создаём привилегию на право удалённого доступа (по протоколу ssh):
Включаем удалённый доступ только для группы remote:
Настраиваем список привилегий для пользователей (для роли users):
Настраиваем список привилегий для администраторов (для роли admins):
Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности:
Просматриваем список назначенных ролей и привилегий:
Данная настройка назначает заданный список локальных групп (привилегий) всем пользователям, входящим в заданные локальные группы (роли). А также назначает локальные роли для глобальных групп в домене.
Дополнительные роли [ править ]
Соответственно, если надо выдать права администраторов АРМ пользователям, которые не являются Domain Admins, то нужно завести новую группу в AD (например, PC Admins), добавить туда необходимых пользователей. Затем на АРМ добавить роль для данной группы:
После этого (и после разрешения sudo для группы wheel) под пользователем входящим в группу PC Admins можно запускать команду повышения прав sudo.
Подключение файловых ресурсов [ править ]
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Через gio [ править ]
Недостаток такого способа — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен Active Directory.
1. Устанавливаем необходимые пакеты (с правами root):
2. Включаем пользователя в группу fuse (с правами root):
3. Входим доменным пользователем
4. Открываем ресурс в файловом менеджере (например, по адресу smb://server/sysvol ). Ресурс смонтирован по пути /var/run/ /gvfs или /var/run/user/ /gvfs/smb-share:server=сервер,share=ресурс
Другой вариант (полезно для скриптов в автозапуске):
Через pam_mount [ править ]
В этом случае заданный ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.
1. Устанавливаем pam_mount :
2. Прописываем pam_mount в схему /etc/pam.d/system-auth-sss :
(перед auth substack system-auth-sss-only )
и в секцию session:
3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml (перед тегом ):
/share» — путь монтирования в домашней папке пользователя
Опционально можно добавить
Для проверки можно попробовать смонтировать ресурс в сессии:
Также можно проверить доступность ресурса с помощью smbclient, например:
Через autofs [ править ]
В этом случае заданный ресурс подключается автоматически при каждом обращении пользователя. И отключается после определенного времени бездействия (определяется конфигуацией Autofs).
Основная статья AutoFS [ править ]
Для дистрибутивов c KDE [ править ]
1. Устанавливаем kde5-autofs-shares :
2. Следуем инструкции по подключению в разделе Альт_Рабочая_станция_К_8_советы.
Групповые политики [ править ]
Групповые политики (GPO) на Linux применяются только контроль входа через SSSD и средства Centrify.
SSSD [ править ]
SSSD имеет внутреннюю поддержку следующих групповых политик:
Источник
SSSD/AD
Подготовка клиентской станции (подключение к домену AD), настройка и установка аутентификации и авторизации c помощью сервиса SSSD.
Содержание
Настройки сети [ править ]
Для подключением к домену проводим проверку настроек сети:
обычно, в таком качестве выступает один или несколько, контроллеров домена:
Настройки kerberos [ править ]
Далее проверяем клиентские настройки kerberos через DNS. В данном случае, для домена dom.loc.:
И задаем их в файле /etc/krb5.conf
Если настройки сети и kerberos выполнены правильно, то мы может получить kerberos TGT от контроллера домена:
Настройки samba [ править ]
Для подключения рабочей станции в домену требуется утилита net из пакета samba-common-tools, кроме того стоит сразу установить пакет samba-client с набором клиентских утилит:
В файле /etc/samba/smb.conf, минимально, необходимо задать следующие параметры в секции [global]:
Набор полученных настроек можно проверить с помощью утилиты testparm:
Ошибка rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) до перезагрузки исправляется командой:
Что бы лимиты действовали и после перезагрузки необходимо отредактировать файл /etc/security/limits.conf :
Проверка наличия kerberos-ключей для рабочей станции
Настройка SSSD [ править ]
Установка sssd-модуля [ править ]
Для работы с Active Directory в SSSD имеется специальный AD-провайдер:
Минимальный конфигурационный файл (/etc/sssd/sssd.conf) для sssd-ad выглядит следующим образом:
Опция ldap_id_mapping = False позволяет включить использование POSIX атрибутов, определённых в Active Directory, вместо встроенной, однозначной трансляции SID’ов. Основная проблема применения POSIX-атрибутов состоит в том, что они могут быть не заданы. В этом случае сервис sssd не загрузится.
Опция use_fully_qualified_names = True включает режим полных имён (включая домен) для пользователей и групп.
Опция fallback_homedir = /home/%d/%u задает домашнюю папку для доменных пользователей. При такой записи %d означает FQDN. Здесь вручную можно указать имя рабочей группы, например /home/DOM/%u
Опция cache_credentials включает режим кэширования аутентификационных данных (полезно при недоступности домена)
Опция user позволяет задать имя пользователя, под которым будет исполняться непривилегированная часть службы SSSD
Настройка авторизации [ править ]
Авторизационные NSS-базы GLibc настраиваются в файле /etc/nsswitch.conf При использовании sssd, требуется внести исправления в следующие строчки:
Настройка аутентификации [ править ]
Для изменения настроек аутентификации (параметров PAM) в ALT Linux используется утилита control:
Запуск и проверка сервиса sssd [ править ]
Если все настройки выполнены правильно, то после запуска сервиса sssd:
будут доступны авторизационные данные для пользователя administrator:
Или для administrator@dom.loc, если установлена опция use_fully_qualified_names = True:
Подключение файловых ресурсов [ править ]
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Через pam_mount [ править ]
В этом случае заданный ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.
1. Устанавливаем pam_mount :
2. Прописываем pam_mount в схему /etc/pam.d/system-auth-sss :
(перед auth substack system-auth-sss-only )
и в секцию session:
3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml (перед тегом ):
/share» — путь монтирования в домашней папке пользователя
Опционально можно добавить
Для проверки можно попробовать смонтировать ресурс в сессии:
Также можно проверить доступность ресурса с помощью smbclient, например:
Источник
Домен/Windows/Manual
Предполагается, что домен ALT Linux создан должным образом и работает.
Содержание
Настройка сервера [ править ]
1. В секции [global] файла /etc/samba/smb.conf добавьте:
Внимание! При использовании домена в Windows будет использоваться имя рабочей группы WORKGROUP (параметр workgroup в /etc/samba/smb.conf). Вы можете поменять его на имя ALT-домена:
Если хотите автоматически подключать общую папку (ресурс share на сервере как диск S: ), то выполните следующее:
2. Перезапустите службу smb и запустите службу nmb:
Службу nmb нужно добавить в автоматический запуск:
3. Обновите ldap-user-tools до версии 0.8.0 или более позднее.
Создание групп и выдача административных привилегий [ править ]
2. В LDAP создайте группы через веб-интерфейс или из командной строки:
Эти группы понадобятся для привязки к группам домена согласно таблице:
Группа LDAP | Группа Windows | Идентификатор в Windows |
---|---|---|
Admins | Domain Admins | 512 |
Users | Domain Users | 513 |
Guests | Domain Guests | 514 |
Computers | Domain Computers | 515 |
Добавьте туда пользователей через веб-интерфейс или из командной строки:
3. Привяжите группы LDAP к группам домена
Примечание: Обратите внимание, пароль можно указывать у имени пользоватeля через «%».
4. Выдайте привилегии для группы Domain Admins :
Проверка (просмотр всех привилегий по группам):
Примечание: обратите внимание, что для заведения компьютера в домен нужно входить в группу с привилегией SeMachineAccountPrivilege.
5. Чтобы не было коллизий с системным пользователем root, после операции по назначению группы и привилегий этого пользователя нужно удалить или восстановить его UID:
6. Проверяем вход в домен администратора cas:
Примечание: проверять вход в домен на сервере следует от пользователя, входящего в группу ‘Domain Admins’. Остальным это запрещено. Список зарегистрированных компьютеров можно посмотреть командой:
Всё в порядке, можно вводить компьютеры с Windows в наш домен.
Права доступа [ править ]
По умолчанию разрешено входить всех доступным пользователям. Посмотреть их список на сервере можно командой:
Для пользователей, входящих в группу Domain Users (или группу Users в LDAP) имеется доступ на диск Z: (домашняя папка пользователя на сервере с создаваемым подкаталогом profile ).
Список входящих в эту группу:
Скрипт при входе [ править ]
При входе можно запускать скрипт в формате bat. Для этого в /etc/samba/smb.conf нужно добавить раздел описания ресурса netlogon :
Примечание: концы строк в файле bat должны быть в стиле dos (rn) (режим :set ff=dos в vim).
Решение проблем [ править ]
Если что-то пошло не так. [ править ]
Если в результате экспериментов сломались привилегии или что-нибудь ещё, нужно очистить внутренние базы Samba. Выполните
Отладка Samba [ править ]
Полезно включить уровень отладки 5 в /etc/samba/smb.conf:
После этого необходимо перечитать конфигурацию:
Смена имени сервера Samba [ править ]
Так как при создании нового пользователя в домене для него прописывается SID, при смене имени сервера серверная часть SID меняется и пользователи со старыми SID уже недоступны, показывается примерно такое
При этом новые пользователи заводятся уже с правильным SID. Для исправления ситуации со старыми пользователями нужно выполнить следующий скрипт:
После этого команда
должна показать имена всех пользователей.
Нюансы реализации [ править ]
Известные проблемы [ править ]
Пользователь при этом создаётся, пароль не устанавливается.
Ещё проблема+решение ниже: при попытке подключения к samba-шаре по из-под Windows XP и с МФУ (т.н. сканирование в папку SMB) логин и пароль не принимаются, возникает ошибка:
Источник
Как ввести компьютер с ОС АЛЬТ в домен Active Directory и сделать так, чтобы Linux-администратору было удобно с ним работать
После установки ОС АЛЬТ в действующую ИТ-инфраструктуру или в тестовую среду, соответствующую продуктивной, ИТ-специалисты часто сталкиваются с вопросом: как ввести компьютер в домен службы каталогов. В основном, в Active Directory от Microsoft.
Чтобы избежать проблем с вводом в домен, системному администратору необходимо убедиться, что служба синхронизации времени работает. И время на рабочей станции соответствует времени на домен-контроллере. Также на рабочей станции должны быть указаны правильные DNS-серверы, в которых присутствуют корректные SRV-записи, указывающие на работающий домен-контроллер.
В ОС АЛЬТ компьютер можно ввести в домен с помощью графического интерфейса. Для этого необходимо установить пакет task-auth-ad-sssd. Операция по вводу в домен рабочей стации через графический интерфейс достаточна проста, нужно лишь правильно указать следующие пункты:
Если подготовка к вводу в домен была выполнена без ошибок, то процесс ввода компьютера в домен выглядит так:
Компьютер подготовлен к вводу в домен, у него есть все необходимые данные.
Появляется запрос на подтверждение полномочий пользователя на ввод в домен компьютера.
Появляется сообщение об успешном вводе в домен.
Проверка успешного ввода в домен.
Однако, трудности, все же бывают. Например:
Как еще можно быстро и просто включить компьютер в домен?
Разработать модуль включения компьютеров в домен и настройки авторизации пользователей в системе централизованного управления конфигурациями и инфраструктурой на базе Puppet, как это сделали мы. Модуль позволяет включать в домен компьютеры, которые объединены общим логическим признаком (например, «новые рабочие станции»).
Для использования модуля достаточно указать название домена и его тип (например, Active Directory). После включения компьютера в среду «новые рабочие станции», на нем автоматически применятся настройки, позволяющие ввести его в домен одной командой. Ввод команды обусловлен требованиями по информационной безопасности (передается пароль учетной записи, обладающей правами на ввод в домен).
Однако, для того, чтобы отечественное ПО в данном случае работало действительно хорошо, нужно снять два самых частых ограничения при работе компьютера с ОС АЛЬТ в домене Active Directory.
Ограничение №1. Сопоставление доменных групп безопасности с локальными
Ситуация. Администратору нужно выполнить настройки для сопоставления доменных групп безопасности с локальными группами. Чтобы у группы безопасности администраторов рабочих станций, применяемых к Windows-клиентам, были одновременно и права администратора и в ОС АЛЬТ. К примеру, если администратор входит в группу «Администраторы домена», он не будет добавлен в группу wheel. При этом выполнять настройки по сопоставлению нужно на каждом компьютере, вручную. Потому что групповые политики по добавлению группы безопасности из Active Directory в локальную группу на компьютере с ОС АЛЬТ не применяются.
Как снять ограничение. Использовать систему централизованного управления конфигурациями и инфраструктурой – например, на базе Puppet. С ее помощью можно распространить нужное состояние и параметры на любое количество компьютеров – в автоматизированном режиме.
Если добавляется доменная группа администратора рабочих станций, то система управления конфигурациями позволяет «раскатать» ее сразу на десятки, сотни или даже тысячи компьютеров. И администраторы рабочих станций на доменных рабочих станциях с ОС Windows, без проблем становятся еще и администраторами на компьютерах с ОС АЛЬТ. Не надо подключаться к каждому компьютеру, вводить последовательность команд вручную. Отпадает и необходимость в создании «костыльных» скриптов, которые полуавтоматизируют процесс, обладая при этом существенными недостатками (например, нет журналирования событий). Нужно просто описать, какое состояние рабочей станции необходимо получить. И дождаться результата. Группа компьютеров будет получать указанную администратором конфигурацию с серверов системы управления конфигурациями.
Ограничение №2. Подключение сетевых ресурсов
Ситуация. При организации файлового сервиса в Windows-инфраструктуре зачастую используются пространства DFS (Distributed File System). И публикация файловых ресурсов. При этом у многих системных администраторов возникает вопрос: «Как и под каким пользователем правильно подключить предоставляемый пользователю сетевой ресурс»?
Казалось бы, для подключения сетевого ресурса можно использовать пользователя, который в данный момент работает за компьютером, или выделить отдельного, Но это не совсем корректно. Потому что за одним и тем же компьютером могут работать разные доменные пользователи, тогда прав на запись информации у них не будет. Или пароль отдельного пользователя будет храниться в файловой системе в открытом виде. В этом случае могут быть предоставлены некорректные права, дающие доступ к файлам для всех. Что небезопасно.
Как снять ограничение. Можно подключать сетевые ресурсы с помощью модуля PAM (Pluggable Authentication Modules) – pam_mount. Использование этого метода позволяет подключать сетевой ресурс от имени активного доменного пользователя с назначенными ему правами, вводя при этом пароль только раз – при входе в систему. К примеру, так мы подключаем сетевой ресурс «Консультант Плюс» на сервере Windows.
Мы подключаем его под доменным пользователем, который авторизовался на рабочей станции, и запуск «Консультанта» проходит без проблем. Для организации доступа к DFS-пространствам: при успешном входе пользователя сетевой ресурс автоматически подключается. Пользователь обладает всеми теми же правами, что и в случае подключения ресурса с Windows-клиента.
Расчёт стоимости
Чтобы предложить вашей компании все возможные решения, а также сделать ориентировочную бюджетную оценку импортозамещающего проекта, специалистам ALP Group необходимо проанализировать текущую архитектуру ее ИТ-сервисов. Анализ проводится на основании заполненных опросных листов, разработанных нашим Центром компетенции по импортозамещению и Open Source.
Точная стоимость импортозамещающего проекта зависит от плотности ИТ-сервисов в компании, количества и типа ИС. Ее можно правильно рассчитать только после ряда специализированных предпроектных обследований (инфраструктурные сервисы, функционал АРМ, АИС и др.).
Оставьте свои контактные данные, пожалуйста.
Наши специалисты обязательно свяжутся с вами, чтобы переслать и помочь заполнить опросные листы, уточнить всю информацию и предоставить расчет.
Источник
Содержание
Введение
Зачастую возникает необходимость ввести Linux-машину в существующий домен Windows. Например, чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто, для этого вам понадобятся клиент Kerberos, Samba и Winbind.
Перед установкой желательно обновиться:
sudo aptitude update sudo aptitude upgrade
Установить всё это добро можно командой:
sudo aptitude install krb5-user samba winbind
Также может понадобиться установить следующие библиотеки:
sudo aptitude install libpam-krb5 libpam-winbind libnss-winbind
Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic.
Далее вам потребуется настроить все вышеперечисленные инструменты для работы с вашим доменом. Допустим, вы хотите войти в домен DOMAIN.COM, доменконтроллером которого является сервер dc.domain.com с IP адресом 192.168.0.1. Этот же сервер является и первичным DNS сервером домена. Кроме того допустим у вас есть второй доменконтроллер1), он же DNS — dc2.domain.com с IP 192.168.0.2. Ваш же компьютер будет называться smbsrv01.
Настройка DNS
Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS сервера доменконтроллер2) и в качестве домена поиска — нужный домен.
Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf
на примерно такое:
domain domain.com search domain.com nameserver 192.168.0.1 nameserver 192.168.0.2
В современных дистрибутивах файл resolv.conf создается автоматически и править вручную его не нужно.
Для получение нужного результата нужно добавить необходимые изменения в файл: /etc/resolvconf/resolv.conf.d/head
Данные которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf
Если IP-адрес динамический и присваивается DHCP сервером то после перезагрузки resolv.conf может формироваться «неправильный» resolv.conf’ , например присутствует только один nameserver 192.168.0.1 и не указаны domain и search. Нужно отредактировать /etc/dhcp/dhclient.conf
. Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name, и вписать свой домен:
supersede domain-name "domain.com";
Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:
prepend domain-name-servers 192.168.0.2;
Для применения изменений остается перезапустить службу:
/etc/init.d/networking restart
Теперь убедитесь, что вы задали нужное имя компьютера в файле /etc/hostname
:
smbsrv01
Кроме того необходимо отредактировать файл /etc/hosts
так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP:
# Имена этого компьютера 127.0.0.1 localhost 127.0.1.1 smbsrv01.domain.com smbsrv01
Сразу нужно проверить что нормально пингуется наш контроллер домена, по короткому и полному имени, чтобы в будушем не получать ошибки что контроллер домена не найден:
ping dc ping dc.domain.com
Не обязательно, но если вы что-то поменяете — перезагрузите компьютер для применения изменений.
Настройка синхронизации времени
Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos.
Для единовременной синхронизации можно воспользоваться командой:
sudo net time set dc
Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:
ntpdate ntp.mobatime.ru
Автоматическая же синхронизация настраивается с помощью ntpd
, это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:
sudo aptitude install ntp
Теперь исправьте файл /etc/ntp.conf
, добавив в него информацию о вашем сервере времени:
# You do need to talk to an NTP server or two (or three). server dc.domain.com
После чего перезапустите демон ntpd
:
sudo /etc/init.d/ntp restart
Теперь пора настраивать непосредственно взаимодействие с доменом.
Настройка авторизации через Kerberos
Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf
. В общем случае он выглядит так:
[libdefaults] default_realm = DOMAIN.COM kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] DOMAIN.COM = { kdc = dc kdc = dc2 admin_server = dc default_domain = DOMAIN.COM } [domain_realm] .domain.com = DOMAIN.COM domain.com = DOMAIN.COM [login] krb4_convert = false krb4_get_tickets = false
Вам, конечно, нужно изменить domain.com
на ваш домен и dc
и dc2
на ваши доменконтроллеры. Кстати, возможно вам понадобится написать полные имена доменконтроллеров dc.domain.com
и dc2.domain.com
. Поскольку у меня прописан домен поиска в DNS, то мне это делать не нужно.
Обратите особое внимание на регистр написания имени домена — везде, где домен написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.
Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.
Теперь настало время проверить, что мы можем авторизоваться в домене. Для этого выполните команду
kinit username@DOMAIN.COM
Вместо username естественно стоит вписать имя существующего пользователя домена.
Имя домена необходимо писать заглавными буквами!
Если вы не получили никаких ошибок — значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Кстати, некоторые распространённые ошибки перечислены чуть ниже.
Убедиться в том, что билет получен, можно выполнив команду
klist
Удалить все билеты (они вам вообще говоря не нужны) можно командой
kdestroy
Итак, будем считать, что авторизацию вы настроили, пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок kinit
.
Распространённые ошибки kinit
kinit(v5): Clock skew too great while getting initial credentials
Это значит, что у вашего компьютера не синхронизировано время с доменконтроллером (см. выше).
kinit(v5): Preauthentication failed while getting initial credentials
Вы ввели неверный пароль.
kinit(v5): KDC reply did not match expectations while getting initial credentials
Самая странная ошибка. Убедитесь, что имя realm в krb5.conf
, а так же домен в команде kinit
введены большими буквами:
DOMAIN.COM = { # ...
kinit username@DOMAIN.COM
kinit(v5): Client not found in Kerberos database while getting initial credentials
Указанного пользователя не существует в домене.
Настройка Samba и вход в домен
Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf
. На данном этапе вас должны интересовать только некоторые опции из секции [global]
. Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:
[global] # Эти две опции нужно писать именно в заглавном регистре, причём workgroup без # последней секции после точки, а realm - полное имя домена workgroup = DOMAIN realm = DOMAIN.COM # Эти две опции отвечают как раз за авторизацию через AD security = ADS encrypt passwords = true # Просто важные dns proxy = no socket options = TCP_NODELAY # Если вы не хотите, чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе, # или даже стать доменконтроллером, то всегда прописывайте эти пять опций именно в таком виде domain master = no local master = no preferred master = no os level = 0 domain logons = no # Отключить поддержку принтеров load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes
После того, как вы отредактируете smb.conf
выполните команду
testparm
Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:
# testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions
Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:
net ads join -U username -D DOMAIN
И в случае успеха вы увидите что-то похожее на:
# net ads join -U username -D DOMAIN Enter username's password: Using short domain name -- DOMAIN Joined 'SMBSRV01' to realm 'domain.com'
Используемые параметры команды net
-U username%password
: Обязательный параметр, вместо username
необходимо подставить имя пользователя с правами администратора домена, и указать пароль.
-D DOMAIN
: DOMAIN
— собственно сам домен, домен можно и не указывать, но лучше всё же это всегда делать — хуже не будет.
-S win_domain_controller
: win_domain_controller
, можно не указывать, но бывают случаи когда автоматически сервер не находит контроллер домена.
createcomputer=«OU/OU/…»
: В AD часто используется OU (Organizational Unit), есть в корне домена OU = Office, в нем OU = Cabinet, чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer=«Office/Cabinet».
Если больше никаких сообщений нет — значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена домена, чтобы убедиться, что в домене всё прописалось так, как надо.
Так же можно набрать команду:
net ads testjoin
Если все хорошо, можно увидеть:
#net ads testjoin Join is OK
Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие3):
DNS update failed!
Это не очень хорошо, и в этом случае рекомендуется ещё раз прочитать раздел про настройку DNS чуть выше и понять, что же вы сделали не так. После этого нужно удалить компьютер из домена и попытаться ввести его заново. Если вы твердо уверены, что всё настроили верно, а DNS всё равно не обновляется, то можно внести вручную запись для вашего компьютера на ваш DNS сервер и всё будет работать. Конечно, если нет никаких других ошибок, и вы успешно вошли в домен. Однако лучше всё же разберитесь, почему DNS не обновляется автоматически. Это может быть связано не только с вашим компьютером, но и с некорректной настройкой AD.
Прежде чем выяснять, почему же не обновляется DNS, не забудьте перезагрузить компьютер после введения в домен! Вполне возможно, что это решит проблему.
Если всё прошло без ошибок, то поздравляем, вы успешно вошли в домен! Можете заглянуть в AD и убедиться в этом. Кроме того хорошо бы проверить, что вы можете видеть ресурсы в домене. Для этого установите smbclient
:
sudo aptitude install smbclient
Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit (см. выше). Посмотрим какие ресурсы предоставлены в сеть компьютером workstation
:
smbclient -k -L workstation
Вы должны увидеть список общих ресурсов на этом компьютере.
Настройка Winbind
Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind — специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.
Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.
Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf
. Добавьте в секцию [global]
следующие строки:
# Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind. # Диапазоны идентификаторов для виртуальных пользователей и групп. idmap uid = 10000 - 40000 idmap gid = 10000 - 40000 # Эти опции не стоит выключать. winbind enum groups = yes winbind enum users = yes # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп # будут использоваться с доменом, т.е. вместо username - DOMAINusername. # Возможно именно это вам и нужно, однако обычно проще этот параметр включить. winbind use default domain = yes # Если вы хотите разрещить использовать командную строку для пользователей домена, то # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false template shell = /bin/bash # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку winbind refresh tickets = yes
Параметры :
idmap uid = 10000 — 40000
idmap gid = 10000 — 40000
в новых версиях Samba уже устарели и при проверке конфига самбы с помощью testparm
будет выдваться предупреждение:
WARNING: The «idmap uid» option is deprecated
WARNING: The «idmap gid» option is deprecated
Чтобы убрать предупреждения нужно заменить эти строки на новые:
idmap config * : range = 10000-20000
idmap config * : backend = tdb
Теперь перезапустите демон Winbind и Samba в следующем порядке:
sudo /etc/init.d/winbind stop sudo smbd restart sudo /etc/init.d/winbind start
Запускаем
sudo testparm
Смотрим есть ли ошибки или предупреждения, если появится:
«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»
Без перезагрузки можно устранить так:
ulimit -n 16384
Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf
# Добавить в конец файла строки: * - nofile 16384 root - nofile 16384
После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой:
# wbinfo -t checking the trust secret for domain DCN via RPC calls succeeded
А так же, что Winbind увидел пользователей и группы из AD командами4):
wbinfo -u wbinfo -g
Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN
, либо без него — в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf
.
Итак, Winbind работает, однако в систему он ещё не интегрирован.
Добавление Winbind в качестве источника пользователей и групп
Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.
Для этого измените две строчки в файле /etc/nsswitch.conf
:
passwd: compat group: compat
добавив к ним в конец winbind
:
passwd: compat winbind group: compat winbind
также рекомендую привести строку files в файле /etc/nsswitch.conf
к виду:
files: dns mdns4_minimal[NotFoud=return] mdns4
ubuntu server 14.04, файл /etc/nsswitch.conf
не содержал строку
«files: dns mdns4_minimal[NotFoud=return] mdns4»
вместо неё было:
«hosts: files mdns4_minimal [NOTFOUND=return] dns wins»
Которую я преобразовал в:
«hosts: dns mdns4_minimal[NotFoud=return] mdns4 files»
после чего всё заработало
Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив
getent passwd getent group
Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd
, то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf
диапазона. Вторая должна сделать тоже самое для групп.
Теперь вы можете взять любого пользователя домена и сделать его, например, владельцем какого-нибудь файла.
Авторизация в Ubuntu через пользователей домена
Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться, выполнив последние две команды из предыдущего раздела), зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.
Он-лайн авторизация
Для Ubuntu 10.04 и выше добавьте всего одну строку в файле /etc/pam.d/common-session
, т.к. PAM и так неплохо справляется с авторизацией:
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
Для Ubuntu 13.10 чтобы появилось поле ручного ввода логина необходимо в любой файл из папки /etc/lightdm/lightdm.conf/
снизу добавить строку:
greeter-show-manual-login=true
Для Ubuntu 9.10 и ниже придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 — он тоже работает):
Последовательность строк в файлах имеет значение!
/etc/pam.d/common-auth
auth required pam_env.so auth sufficient pam_unix.so likeauth nullok try_first_pass auth sufficient pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE auth required pam_deny.so
/etc/pam.d/common-account
account sufficient pam_winbind.so account required pam_unix.so
/etc/pam.d/common-session
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077 session optional pam_ck_connector.so nox11 session required pam_limits.so session required pam_env.so session required pam_unix.so
/etc/pam.d/common-password
password sufficient pam_unix.so try_first_pass use_authtok nullok sha512 shadow password sufficient pam_winbind.so password required pam_deny.so
И, наконец, необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:
sudo bash -c "for i in 2 3 4 5; do mv /etc/rc$i.d/S20winbind /etc/rc$i.d/S99winbind; done"
Что эквивалентно запуску для каждого уровня (в примере — 4) команды:
mv /etc/rc4.d/S20winbind /etc/rc4.d/S99winbind
В некоторых случаях winbind может иметь иной уровень запуска (например, S02winbind). Поэтому сначала проверьте имена файлов, вполнив команду «ls /etc/rc{2,3,4,5}.d/ | grep winbind» (без кавычек).
Готово, все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена.
Офф-лайн авторизация
Часто возникает ситуация, когда домен-контроллер недоступен по различным причинам — профилактика, отключение света или вы принесли ноутбук домой и хотите поработать. В этом случае для Winbind можно настроить кэширование учетных записей пользователей домена. Для этого необходимо сделать следующее.
Добавьте в секцию [global]
файла /etc/samba/smb.conf
следующие строки:
[global] # Возможность оффлайн-авторизации при недоступности доменконтроллера winbind offline logon = yes # Период кэширования учетных записей, по умолчанию равен 300 секунд winbind cache time = 300 # Необязательная настройка, но избавляет от нудных пауз, указываем контроллер домена dc, # можно указать и ip, но это является плохим тоном password server = dc
Обычно этого достаточно. Если же возникают ошибки, то необходимо создать файл /etc/security/pam_winbind.conf
со следующим содержанием5):
Внимание! При использовании советов ниже может возникать совершенно случайная ошибка «Сбой аутентификации»! Поэтому все что Вы делаете, Вы делаете на свой страх и риск!
# # pam_winbind configuration file # # /etc/security/pam_winbind.conf # [global] # turn on debugging debug = no # request a cached login if possible # (needs "winbind offline logon = yes" in smb.conf) cached_login = yes # authenticate using kerberos krb5_auth = yes # when using kerberos, request a "FILE" krb5 credential cache type # (leave empty to just do krb5 authentication but not have a ticket # afterwards) krb5_ccache_type = FILE # make successful authentication dependend on membership of one SID # (can also take a name) ;require_membership_of = silent = yes
Файл /etc/pam.d/gnome-screensaver
в таком случае принимает вид:
auth sufficient pam_unix.so nullok_secure auth sufficient pam_winbind.so use_first_pass auth required pam_deny.so
А также изменяется файл /etc/pam.d/common-auth
:
auth optional pam_group.so auth sufficient pam_unix.so nullok_secure use_first_pass auth sufficient pam_winbind.so use_first_pass auth required pam_deny.so