LINUX.ORG.RU

CentOs 7 + Samba + AD

 , , , ,


0

1

Hi, all!

Вторые сутки мучаюсь с сабжевой связкой.

История такова: стояла самба в связке с винбиндом и все работало прекрасно. Но вот я переехал в другую подсеть, вроде бы снова ввел компьютер в домен... и все сломалось после НГ.

Мне насоватовали использовать sssd. Но беда: все конфиги используют security = ads. А если верить документации, то ads используется только в связке с winbind:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html... https://smb-conf.ru/security-g.html

а sssd и winbind друг друга взаимоисключают.

А мне вот обязательно надо использовать учетки из АД при разграничении прав в шаре.

Как это правильно реализовать? В результате всех моих мучений конфиги выглядят так: krb5.conf:

# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

includedir /var/lib/sss/pubconf/krb5.include.d/
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = true
 dns_lookip_dkc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = true
 default_realm = SILAR.LOCAL
 default_keytab_name = FILE:/etc/krb5.keytab
 default_ccache_name = KEYRING:persistent:%{uid}

 dns_lookup_kdc = true
[realms]
# EXAMPLE.COM = {
#  kdc = kerberos.example.com
#  admin_server = kerberos.example.com
# }

 SILAR.LOCAL = {
  kdc = SrvE2.silar.local
  admin_server = SrvE2
  default_domian = SILAR.LOCAL
 }

 SILAR.LOCAL = {
  kdc = SrvE2.silar.local
  admin_server = SrvE2
 }

[domain_realm]
.silar.local = SILAR.LOCAL
silar.local = SILAR.LOCAL

[appdefaults]
pam = {
    debug = false
    ticket_lifetime = 36000
    renew_lifetime = 36000
    forwardable = true
    krb4_convert = false
}

smb.conf догенерировать после запуска realm join --client-software=winbind silar.local -U admin

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.


[global]

   interfaces = lo enp6s0
idmap config SILAR : range = 2000000-29999999
idmap config SILAR : backend = rid
idmap config * : range = 10000-999999
idmap config * : backend = tdb
template homedir = /home/%U
template shell = /bin/bash
kerberos method = system keytab
   dedicated keytab file = /etc/krb5.keytab
security = user
#   map to guest = Bad User
   map acl inherit = Yes 
   vfs objects = acl_xattr

	passdb backend = tdbsam

	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw
winbind use default domain = yes
winbind refresh tickets = yes
winbind offline logon = yes
winbind enum groups = no
winbind enum users = no


[printers]
	comment = All Printers
	path = /var/tmp
	printable = Yes
	create mask = 0600
	browseable = No

[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	write list = root
	create mask = 0664
	directory mask = 0775

#[Projects]
#	browsable = yes
#	comment = shared
#	path = /opt/shared/Projects
#	valid users = %S, %D%W%S, @SILAR\vydrevitch, @SILAR\agp, @SILAR\chepilko
#	force group = @"SILAR\domain users"
#	writable = Yes
#	read only = No
#	force create mode = 0660
#	create mask = 2775
#	directory mask = 2775
#	access based share enum = Yes
#	hide unreadable = Yes
#	inherit acls = Yes


#	browsable = yes
#	guest ok = yes
#	public = yes
#	force user = vydrevitch

[Projects]
	browsable = yes
	comment = shared
	path = /opt/shared/Projects
	force user = agp
	force group = projects
	valid users = @"SILAR@g_calibre"
#	write list = @"SILAR~g_calibre"
#	valid users = SILAR~vydrevitch, SILAR~agp, chepilko
	writable = yes
	read only = no
	force create mode = 0770
	create mask = 6775
	directory mask = 6775
	access based share enum = Yes
	hide unreadable = Yes

При этом, разумеется

systemctl status sssd
● sssd.service - System Security Services Daemon
   Loaded: loaded (/usr/lib/systemd/system/sssd.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2019-01-22 23:59:26 MSK; 7s ago
  Process: 22364 ExecStart=/usr/sbin/sssd -i ${DEBUG_LOGGER} (code=exited, status=4)
 Main PID: 22364 (code=exited, status=4)

Jan 22 23:59:26 design-serv systemd[1]: Starting System Security Services Daemon...
Jan 22 23:59:26 design-serv sssd[22364]: SSSD couldn't load the configuration database [2]: No such file or directory.
Jan 22 23:59:26 design-serv systemd[1]: sssd.service: main process exited, code=exited, status=4/NOPERMISSION
Jan 22 23:59:26 design-serv systemd[1]: Failed to start System Security Services Daemon.

P.S. заодно вопрос: не могу понять - мой сервер упорно перестал отображаться в сетевых окружениях виндовых машин. в прямой и обратной зонах DNS прописан, в списке копьютеров AD - присутствует. А в сетевом окружении - нет. В процессе экспериментов, тогда когда до его шар был хоть какой-то доступ, я на него заходил по IP



Последнее исправление: yarra (всего исправлений: 2)

За сетевое отображение отвечает протокол netbios. Оно тебе реально нужно или мб стоит смонтировать как сетевой диск клиентам?

leonidko ★★★★
()
Ответ на: комментарий от leonidko

Оно мне реально нужно. Иначе бы я не заморачивался

yarra
() автор топика

Если фаервол не блокирует 137,138 порты для nmbd и сервер с окружением в одном броадкаст сегменте то предположу что на рабочих станциях Вин10 которая с некоторых пор самбу таки перестала видеть. По IP с винды ресурс монтирует? На рабочих станциях Вин10?

VKraft ★★
()

В итоге разобрался сам.

Все опять завелось на связке winbind + samba.

После глубокого и вдумчивого чтения мануалов по Samba4.

Оказалось я неправильно прописывал пользователей и группы, а так же не правильно выставлял права доступа.

yarra
() автор топика

Для sssd есть свой провайдер винбинда. Я заводил таким скриптом:AD и Ubuntu (комментарий)

Проблем не было.

А самбовскому winbind лучше не доверять. Он любит внезапно подводить.

Ivan_qrt ★★★★★
()
Последнее исправление: Ivan_qrt (всего исправлений: 1)
Ответ на: комментарий от Ivan_qrt

Провайдер winbinda это realmd?

Просто в документации на самбу про это ни слова не сказано.

Я пытался настроить доступ по тем конфигам что идет по ссылке - не взлетело вообще.

пойду почитаю про sssd официальные доки. Может быть и найду чего.

yarra
() автор топика
Ответ на: комментарий от yarra

Провайдер winbinda это realmd?

sssd-libwbclient.x86_64.

Просто в документации на самбу про это ни слова не сказано.

Ну это со стороны sssd сделано. Совместимая реализация для предоставления пользователей. В центоси, по идее, вообще для этого никаких телодвижений делать не надо, само цепляется.

Я пытался настроить доступ по тем конфигам что идет по ссылке - не взлетело вообще.

Ну если ещё интересно сделать через sssd, то выкладывай подробности.

Ivan_qrt ★★★★★
()
Ответ на: комментарий от Ivan_qrt

Интересно, он у меня стоял, но самба ругалась.

интересно. но сначала я хочу разобраться почему у меня линуксовая машина не прописывается в dns. А если и прописывается, то есть два косяка:

1. в днс попадают несколько записей, привязанных к моему доменному имени. то есть host 192.168.1.107 (реальный IP реальной сетевой карты) и host 172.130.2.1 host 172.16.97.1

это адреса виртуальных интерфейсов от vmware.

2. не появляется записи в зоне обратного просмотра. можно внести руками, но, имхо, это не правильно.

Пока я так и не разобрался почему и как.

yarra
() автор топика
Ответ на: комментарий от Ivan_qrt

Не помогло.

[sssd]
domains = work.local
config_file_version = 2
services = nss, pam

[domain/work.local]

ad_domain = work.local
krb5_realm = WORK.LOCAL
realmd_tags = manages-system joined-with-samba 
cache_credentials = True
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%d/%u

id_provider = ad
auth_provider = ad
access_provider = ad
access_provider = ad

ldap_schema = ad

dyndns_update = true
dyndns_iface = eno1
dyndns_update_ptr = true
dyndns_refresh_interval = 43200
dyndns_ttl = 3600

Перезапускаю сервис, network - днс домена вообще не видит комп. При этом по IP пингуется

yarra
() автор топика
Ответ на: комментарий от yarra

А имя компа соответствует домену? Не знаю насколько это важно, но я пробовал только когда hostname -f заканчивается на домен.

Перезагрузить, или завести в домен ещё раз с этими опциями пробовал?

Ivan_qrt ★★★★★
()
Ответ на: комментарий от Ivan_qrt

Верно, не соответствовало. Переставил в начало - помогло.

По поводу заведения в домен:

судя по всему регистрация происходит в момент входа в домен. В это время файл sssd.conf конфигурируется автоматически. Если после его автоконфига я в него добавляю необходимые опции и перезапускаю сервис - ничего не происходит. При этом в зоне обратного просмотра компьютер все так же не появляется.

При это не важно указываю я в hosts ip-адрес 127.0.0.1 или реальный.

После перезагрузки все тоже самое.

yarra
() автор топика
Ответ на: комментарий от yarra

Документации и конфигов, хотя бы конфигов, что бы понять что было неправильно и самому не столкнуться с этим.

Спасибо.

anonymous
()
Ответ на: комментарий от Ivan_qrt

указать настройки в /etc/sssd/conf.d так же не помогло. Судя по выхлопу realm:

/usr/bin/net -s /var/cache/realmd/realmd-smb-conf.TUWTVZ -U admin ads join work.local osName=CentOs 7

realm подключается к домену через net и какой-то свой скомпилированный невесть каким образом конфиг. Поэтому, подозреваю, что в этом самом конфиге должна быть строка intefaces = eno1, как это указывается при кодключении к AD через связку winbind+samba. Но как это сделать я так и не понял.

yarra
() автор топика
Ответ на: комментарий от anonymous

https://smb-conf.ru/

https://www.samba.org/samba/docs/using_samba/ch09.html (как и все файлы из раздела /doc/

Мой smb.conf: https://pastebin.com/MDQ9hgN3

Примеры конфига krb5.conf приводить смысла не вижу, они почти везде одинаковые, а имеющиеся различия, кажется, не дают ничего сильно большой разницы в работе.

В остальном косяки были примерно те же, что я тут собрал.

yarra
() автор топика
Ответ на: комментарий от yarra

При это не важно указываю я в hosts ip-адрес 127.0.0.1 или реальный.

Ну похоже, что sssd создаёт PTR-запись именно на основе содержимого `/etc/hosts`. Попробуй поставить в нём твой ip в соответсвие fqdn, выставить sssd debug и вывалить лог sssd после ребута.

Ivan_qrt ★★★★★
()
Ответ на: комментарий от Ivan_qrt

У меня так и стоит.

И нет, это не sssd, как ни странно. Я перепроверял: удалял записи из ДНС руками и сидел перезапускал sssd - ноль реакции. Стоит только перезайти в домен - через некоторое время все появляется.

Выхлоп sssd с debug-level=8 https://paste.pound-python.org/show/QCTGKv93c45RTbuhQdCd/

yarra
() автор топика
Ответ на: комментарий от yarra

Ок. А лог самбы? Соответственно в конфиге должно быть

[global]
    interfaces = eno1
...

Если не sssd, то только самба. Больше некому.

Ivan_qrt ★★★★★
()
Ответ на: комментарий от Ivan_qrt

Дело в том, что realm не запускает самбу сам по себе (это видно из выхлопа с ключом -v). Так же как net ads join. realm Что не мешает ему, тем не менее, не смотря на наличие прослойки sssd-libwinbind менять security с ads на user.

Если посмотришь, я выше приводил выхлоп от realm join -v. Он формирует свой собственный realm.smb. Что характерно - непонятно откуда он его берет. Потом, очевидно, он заполняет sssd.conf, активирует sssd, делает authconfig и перезапускает sssd.

Сейчас в секции [global] так и прописан интерфейс, но перезаход в домен так же ничего не изменил - три записи в dns.

К сожалению realm это бинарник, поэтому не понятно как он формирует этот самый realm.smb

yarra
() автор топика
Ответ на: комментарий от Ivan_qrt

Собственно весь выхлоп от realm -U admin -v

 * Resolving: _ldap._tcp.work.local
 * Performing LDAP DSE lookup on: 192.168.3.170
 * Performing LDAP DSE lookup on: 192.168.3.170
 * Successfully discovered: work.local
Password for admin: 
 * Required files: /usr/sbin/oddjobd, /usr/libexec/oddjob/mkhomedir, /usr/sbin/sssd, /usr/bin/net
 * LANG=C LOGNAME=root /usr/bin/net -s /var/cache/realmd/realmd-smb-conf.QYS1VZ -U admin ads join work.local osName=CentOs 7
Enter admins's password:
Using short domain name -- WORK
Joined 'CCALIBRE' to dns domain 'work.local'
 * LANG=C LOGNAME=root /usr/bin/net -s /var/cache/realmd/realmd-smb-conf.QYS1VZ -U admin ads keytab create
Enter admin's password:
 * /usr/bin/systemctl enable sssd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/sssd.service to /usr/lib/systemd/system/sssd.service.
 * /usr/bin/systemctl restart sssd.service
 * /usr/bin/sh -c /usr/sbin/authconfig --update --enablesssd --enablesssdauth --enablemkhomedir --nostart && /usr/bin/systemctl enable oddjobd.service && /usr/bin/systemctl start oddjobd.service
 * Successfully enrolled machine in realm
yarra
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.