Ubuntu 16.04 Active Directory
Решил ввести ubuntu 16.04 server в домен active directory. Заодно посмотреть что изменилось с предыдущего раза.
https://imbicile.pp.ru/samba-server-ad/
Поэтому решено написать новую статью. Старую на всякий случай не трогаю.
Изначальные данные
Имя сервера: u1604
Имя сервера контроллера домена: SERV.DOMEN.MY
Имя домена: DOMEN.MY
Пользователь домена с правами на присоединение: supauser@DOMEN.MY
Папка для общего доступа с правами 777 : /home/virtual/Share
Перед правкой конфигурационных файлов ОБЯЗАТЕЛЬНО делайте их бэкапы
Обновляем сервер
sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y
Ставим samba и winbind
sudo apt-get install samba winbind
Ставим авторизацию kerberos
sudo apt-get install krb5-user
Ставим механизмы авторизации. Иначе не будет работать и будем при тестировании получать ошибку
session setup failed: NT_STATUS_INVALID_PARAMETER
sudo apt-get install libpam-krb5 libpam-winbind libnss-winbind
Правим winbind
nano /etc/nsswitch.conf
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat winbind group: compat winbind shadow: compat winbind gshadow: files hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4 networks: files dns protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Правим samba
nano /etc/samba/smb.conf
[global]
netbios name = u1604
workgroup = DOMEN
realm = DOMEN.MY
security = ADS
encrypt passwords = yes
dns proxy = no
panic action = /usr/share/samba/panic-action %d
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
template shell = /bin/bash
winbind refresh tickets = yes
idmap config *:backend = tdb
idmap config *:range = 10000-80000
idmap config DOMEN:backend = rid
idmap config DOMEN:range = 10000-80000
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
[share]
path = /home/virtual/Share
writeable = yes
browseable = yes
guest ok = no
Проверяем настройки samba
testparm -s
Правим ошибку количества соединений
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Добавляем в конец файл строку со значением 16384
nano /etc/security/limits.conf
............................ #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #ftp - chroot /ftp #@student - maxlogins 4 * - nofile 16384 # End of file
Изменения лимитов будут приняты после перезагрузки
Правим настройки kerberos
nano /etc/krb5.conf
[libdefaults]
default_realm = DOMEN.MY
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24000
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
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]
DOMEN.MY = {
kdc = SERV.DOMEN.MY
admin_server = SERV.DOMEN.MY
default_domain = DOMEN.MY
}
[domain_realm]
.domen.my = DOMEN.MY
domen.my = DOMEN.MY
[login]
krb4_convert = false
krb4_get_tickets = false
Правим файл hosts
Именно обязательно в этом порядке. Иначе получим ошибку на этапе присоединения
No DNS domain configured for u1604. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
nano /etc/hosts
127.0.0.1 localhost 127.0.1.1 u1604.domen.my u1604 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Присоединяем к домену используя учетную запись с правами администратора домена
net ads join -U supauser
Проверяем присоединение
net ads testjoin
Join is OK
Ставим клиент и библиотеки для проверки сетевых папок
sudo apt install samba cifs-utils smbclient
Проверяем работу winbind
wbinfo -t
wbinfo -u
wbinfo -g
Проверяем работу kerberos
kinit supauser@DOMEN.MY
Смотрим что мы получили
klist
Default principal: supauser@DOMEN.MY Valid starting Expires Service principal 15.09.2016 12:59:59 15.09.2016 19:39:55 krbtgt/DOMEN.MY@DOMEN.MY
Проверяем работу папок. На этом моменте долго не мог понять почему не авторизуется. Если заходить из Windows то просит пароль. Оказалось как раз из за нехватки библиотек установленных выше.
session setup failed: NT_STATUS_INVALID_PARAMETER
smbclient -U supauser@DOMEN.MY -L localhost
Проверяем работу самбы
smbstatus
Samba version 4.3.9-Ubuntu PID Username Group Machine Protocol Version ------------------------------------------------------------------------------ 1616 supauser администраторы домена 10.10.10.5 (ipv4:10.10.10.5:52467) SMB3_00 Service pid machine Connected at ------------------------------------------------------- share 1616 10.10.10.5 Thu Sep 15 12:42:27 2016 Locked files: Pid Uid DenyMode Access R/W Oplock SharePath Name Time -------------------------------------------------------------------------------------------------- 1616 11424 DENY_NONE 0x100081 RDONLY NONE /home/virtual/Share . Thu Sep 15 12:42:26 2016
По поводу записи в hosts официальная вики самбы говорит вот что:
This error appears, because Samba can’t find a DNS domain the host belongs to. Run the following command
# getent hosts M1
10.99.0.5 M1.samdom.example.com M1
The commands output must show the correct LAN interface IP (not 127.*.*.*!) and the hostname including the AD DNS zone. Additional alias names are optional. If you’re getting a different or no output, fix it in your DNS or by adding/changing the /etc/hosts entry:
10.99.0.5 M1.samdom.example.com M1
то есть адрес должен быть сетевым (10.99.0.5), а не локальным (127.0.0.1).
Или может здесь спрятан хитрый план? Поясните, пожалуйста.
Вот линк: https://wiki.samba.org/index.php/Troubleshooting_error_messages_during_Domain_Member_join
Хитрый план 127.0.0.1 исходя из логики что IP адрес может раздаваться по DHCP и следовательно может меняться.
Поэтому в файле host имя компьютера указывается на 127.0.0.1. Возможно это и противоречит Wiki, но работает и нареканий нет.
Плюс изучив большое количество статей по настройки самбы в основном все указывают именно 127.0.0.1. В том числе такие источники как хабрахабр.
Скажите пожалуйста, я как раз хочу попробовать завести убунтушный комп в домен, получу ли я при такой настройке как раз авторизацию пользователя из домена? То есть не чтобы создавать на локальной машине а чтобы такой юзер появился на локалке если он есть в домене?
За ранее благодарю.
Да. После ввода в домен появится возможность входа с помощью доменной учетной записи. Правда вероятно что в статье не вся информация по этому поводу. Так как еще сколько я знаю надо настроить PAM на работу с Winbind.
Так же существует утилита ввода в домен через графическую оболочку. domainjoin-cli. Сколько помню она находиться в пакете pbis-open, который качается deb пакетом с сайта производителя.
В кратце хочу обьяснить, я хочу собрать лиунксовую машинку с самым важным софтом и готовыми настройками, чтобы упаковать в какой то образ.
После просто брать его, залить на машинку, и чтоыб только изменить имя компа в сети и все. Хочу понять на сколько это реально и с какими проблемами можно столкнуться.
Чисто исходя из логики такое возможно. Настройки не затрагивают профиль пользователя. Под каждого пользователя дэфолтные настройки можно подготовить в /etc/skel/. Но делать образ скорей всего надо будет без ввода в домен. То есть подготовить. Настроить. Свернуть в образ. Затем развернуть. Поменять имя ПК. Затем уже делать net ads join. Если это не сделать то по идее поползут конфликты. А так по идее, почему бы и нет. Главное это дело хорошенько протестировать и только после этого рать за рабочий вариант.
Доброго времени суток!
Замечательная статья. Но возник глупый вопрос, как авторизоваться на компьютере под пользователем домена? При попытке входа под MYDOMEN\User пишет, что пароль не правильный (проверял правильный)?
Если все проверки “wbinfo -u” и прочее работает, то скорей всего не работают механизмы PAM
Здесь они не рассмотрены так как не подразумевалось входить под пользователями. Присмотреть примеры можно на официальной станице Ubuntu http://help.ubuntu.ru/wiki/%D0%B2%D0%B2%D0%BE%D0%B4_%D0%B2_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD_windows
Раздел “Авторизация в Ubuntu через пользователей домена”
К сожалению в офф документации нет настроек для 16.04, Перелопатил тоны инфы так и не нашел корректных конфигов PAM.
Из вариаций можно попробовать указать логин вида domen@user или domen\user.
А так, к сожалению пока такую задачу еще не доводилось решать.
idmap config *:backend = tdb
idmap config *:range = 10000-80000
idmap config DOMEN:backend = rid
idmap config DOMEN:range = 10000-80000
Настройки не подсвечиваются зеленным цветом, это нормально? Ощущение, что idmap config не читается.
А вот, если убрать ; из стандартного конфига, то
idmap uid = 10000-20000 подсвечивает зеленным.
По поводу цветности тут не совсем понял. Цветность зависит от настроек редактора. Здесь главное чтобы testparm не выдавал ошибок. Если что то не читается или написано неверно, то будет предупреждение или ошибка.
testpam вроде без ошибок, но странно, просто vim, по идеи, подсвечивает зеленным, если параметр принят, но мб сам редактор тупит…
workgroup = DOMEN лучше исправить на workgroup =