Невозможно подключиться к общему ресурсу Samba, присоединенному к AD на RHEL 7.3 из Windows

Хотя я могу найти проблемы с разрешениями для Samba, используя локальных пользователей Linux здесь и через поиск Google, я не могу найти решение моей конкретной проблемы. У меня нет опыта работы с Samba, так что весь этот процесс был настоящим приключением, но теперь я выдергиваю волосы. Я очень признателен за некоторые идеи. Я включаю все, что делал, на случай, если это понадобится другим, и, надеюсь, помочь кому-то мне помочь.

У меня единственный домен Windows Server 2016 Active Directory. Корневое имя - ad.company. com. Мне нужен коммерчески поддерживаемый сервер Linux с общим ресурсом SMB, который разрешает доступ для чтения к одним группам домена и доступ на запись к другим. Почему Linux? Он будет разговаривать с другими машинами Linux и будет использовать многие инструменты Linux. Наша текущая установка на другом клиенте хорошо работает таким образом, но она не была настроена нами и использует RHEL 5.

Я выбрал сервер RHEL 7.3, так как наша компания больше всего знакома с этим дистрибутивом. Я установил минимальную установку с ISO сервера. Хэш для ISO показывает, что он не поврежден. Я успешно смонтировал раздел ext4 в / mnt / share. Я настроил сервер на наличие имени хоста в пространстве имен корневого домена, установил DNS-сервер на PDC, установил суффикс поиска как домен (ad.company.com) и установил его со статическим IP-адресом. Все это было сделано в установщике. Машина может легко разрешить имена хостов серверов Windows в домене. Серверы Windows могут разрешить имя хоста компьютера Linux. IP-адреса можно отправлять в обоих направлениях.

Так как это начальная конфигурация, все, что описано ниже, было сделано под root.

Я установил следующие пакеты.

yum install nano
yum install net-tools
yum install nmap
yum install ntp ntpdate ntp-doc
yum install krb5-workstation
yum install samba
yum install samba-winbind
yum install samba-winbind-clients

Я установил сервер NTP как PDC. /etc/ntp.conf

driftfile /var/lib/ntp/drift

restrict default nomodify notrap nopeer noquery

restrict 127.0.0.1 
restrict ::1

server pdc.ad.company.com iburst prefer
restrict pdc.ad.company.com mask 255.255.255.255 nomodify notrap nopeer noquery

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

disable monitor

Я настроил клиента KRB5 для подключения к домену AD. /etc/krb5.conf

includedir /etc/krb5.conf.d/

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 ticket_lifetime = 600
 default_realm = AD.COMPANY.COM
 default_tkt_enctypes = rc4-hmac 
 default_tgs_enctypes = rc4-hmac 
 dns_lookup_realm = false
 dns_lookup_kdc = true

[realms]
 AD.COMPANY.COM = {
  kdc = pdc.ad.company.com
  admin_server = pdc.ad.company.com
 }

[domain_realm]
 .ad.company.com = AD.COMPANY.COM
 ad.company.com = AD.COMPANY.COM

Я проверил соединение с PDC. Это было успешно.

kinit admin@AD.COMPANY.COM

Я настроил samba для подключения к домену, использовал расширенные атрибуты ACL и сделал доступным общий ресурс под названием «share». /etc/samba/smb.conf

[global]
    security = ADS
    workgroup = AD
    realm = AD.COMPANY.COM
    idmap config * : backend = tbd
    idmap config * :range = 3000-7999
    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes

    passdb backend = tdbsam

    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw
    log level = 1

[share]
    path = /mnt/share
    read only = no

[homes]
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = No
    read only = No
    inherit acls = Yes

[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

Я настроил nsswitch на использование winbind.
/etc/nsswitch.conf

passwd:     files winbind
shadow:     files sss
group:      files winbind

hosts:      files dns myhostname

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files sss

netgroup:   files sss

publickey:  nisplus

automount:  files
aliases:    files nisplus

Я запустил windbindd, smbd и nmbd.

winbindd
smbd
nmbd

Я настроил их на запуск при загрузке.

systemctl enable smb nmb winbind

Я перезагрузился, затем протестировал windbind, чтобы проверить соединение с доменом. Это удалось.

wbinfo --ping-dc

В одном из прочитанных мной документов сказано, что ext4 поддерживает расширенные ACL, но я на всякий случай проверил. Там написано, что он есть.

smbd -b | grep HAVE_LIBACL

Я предоставил разрешение на предоставление привилегий AD.COMPANY.COM \ Domain Admins .

net rpc rights grant "AD\Domain Admins" SeDiskOperatorPrivilege -U "AD\administrator"

Затем я проверил, чтобы убедиться, что он завис.

net rpc rights list privileges SeDiskOperatorPrivilege -U "AD\administrator"

Я использовал testparm для проверки синтаксис файла smb.conf. Он проанализировал весь файл без ошибок.

testparm /etc/samba/smb.conf

Следующее, что нужно сделать, это подключиться к общему ресурсу в качестве администратора домена и настроить ACL. Здесь я наткнулся на загвоздку. И в Windows Server 2016, и в Windows 10 я не могу подключиться к серверу через проводник. Я пробовал \\ linuxserver , \\ linuxserver \ share , \\ 192.168.1.75 и \\ 192.168.1.75 \ share . Во всех случаях Windows сообщает мне: «Сетевой путь не найден». Он не запрашивает у меня учетные данные и не сообщает, что у меня нет разрешений. Как будто он вообще этого не видит.

Вот что я сделал для решения этой проблемы. Я могу успешно пропинговать сервер Linux по имени хоста и IP. Я убедился, что smbd, nmbd и windbindd запущены.

ps -eo 'tty,pid,comm' | grep smbd
ps -eo 'tty,pid,comm' | grep nmbd
ps -eo 'tty,pid,comm' | grep winbindd

Я убедился, что smbd прослушивает порт 445.

netstat -plnt
nmap -sT -O localhost

Я отключил SMB2 и SMB3 через сеанс администратора Powershell на машине Windows, чтобы проверить, могу ли я использовать SMB1.

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Я проверил, что параметр застрял, перезагрузился, затем попытался с тем же результатом.

Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol

Я перезагрузил сервер Linux для хорошей меры.

Уф! Спасибо, что прочитали все!

0
задан 2 March 2017 в 16:18
1 ответ

Вы действительно использовали \ linuxserver \ share вместо \\ linuxserver \ share ? В Redhat 7.x вы можете запустить realm join , и это обрабатывает почти всю настройку AD.

РЕДАКТИРОВАТЬ: Если вы используете две обратные косые черты в комментариях, они заменяются на одну обратную косую черту. Это выглядело так, как будто вы сделали одну обратную косую черту перед именем сервера.

0
ответ дан 5 December 2019 в 08:33

Теги

Похожие вопросы