Статья является более углублённым материалом по сравнению с опубликованной ранее методикой.
192.168.1.190 Samba4 AD centos7 Пульт дистанционного управления 192.168.1.191 win 10 192.168.1.22 - клиент Аутентификация - CentOS 7 192.168.1.192 - Аутентификация клиента Samba 4 на CentOS 6
Установка Samba 4
192.168.1.190 Samba4 AD centos7
Основой является система CentOS 7 с минимальной установкой и отключенным selinux.
# sestatus SELinux status: disabled [root@samba4 ~]#
Сделайте запись в /etc/hosts-файле.
[root@samba4 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.190 samba4.my.domain samba4 [root@samba4 ~]#
Установите epel repo.
[root@~]# yum install epel-release -y
Установите все пакеты, необходимые для компиляции базы Samba 4.
[root@~]# yum install perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins\ policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel\ cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget -y
Теперь скачайте пакет Samba 4 . Я использую samba-4.6.0, которая является последней версией на момент загрузки.
[root@samba4 ~]# wget https://download.samba.org/pub/samba/stable/samba-4.6.0.tar.gz
Теперь установите Samba 4.
[root@samba4 ~]# tar -zxvf samba-4.6.0.tar.gz [root@samba4 ~]# cd samba-4.6.0 [root@samba4 samba-4.6.0]# ./configure --enable-debug --enable-selftest --with-ads --with-systemd --with-winbind [root@samba4 samba-4.6.0]# make && make install
Установка займет около 10 минут в зависимости от скорости системы.
Теперь мы начнем подготавливать домен.
[root@samba4 samba]# samba-tool domain provision --use-rfc2307 --interactive Realm [my.domain]: Domain [SUNIL]: Server Role (dc, member, standalone) [dc]: dc DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]: Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=sunil,DC=cc Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2820 File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run return self.run(*args, **kwargs) File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 471, in run nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision skip_sysvolacl=skip_sysvolacl) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill next_rid=next_rid, dc_rid=dc_rid) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le')) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif ldb.add_ldif(data, controls) File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 225, in add_ldif self.add(msg, controls) [root@samba4 samba]#
Во время подготовки домена могут возникнуть ошибки.
Чтобы исправить их, пожалуйста, закомментируйте строку ниже ,в файле /etc/krb5.conf.
-------- #includedir /etc/krb5.conf.d/ --------
Повторите запуск домена инициализации, теперь домен будет создан без ошибок.
[root@samba4 etc]# samba-tool domain provision --use-rfc2307 --interactive Realm [my.domain]: Domain [SUNIL]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]: Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=sunil,DC=cc Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: samba4 NetBIOS Domain: SUNIL DNS Domain: my.domain DOMAIN SID: S-1-5-21-2936486394-2075362935-551615353 [root@samba4 etc]#
Убедитесь, что порты в брандмауэре открыты.
[etc]#firewall-cmd --add-port=53/tcp --permanent;firewall-cmd --add-port=53/udp --permanent;firewall-cmd --add-port=88/tcp --permanent;firewall-cmd --add-port=88/udp --permanent; \ firewall-cmd --add-port=135/tcp --permanent;firewall-cmd --add-port=137-138/udp --permanent;firewall-cmd --add-port=139/tcp --permanent; \ firewall-cmd --add-port=389/tcp --permanent;firewall-cmd --add-port=389/udp --permanent;firewall-cmd --add-port=445/tcp --permanent; \ firewall-cmd --add-port=464/tcp --permanent;firewall-cmd --add-port=464/udp --permanent;firewall-cmd --add-port=636/tcp --permanent; \ firewall-cmd --add-port=1024-5000/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent [root@samba4 ~]# firewall-cmd --reload
Создайте сценарий автозапуска службы во время перезагрузки.
[root@samba4 ~]# cat /etc/systemd/system/samba.service [Unit] Description= Samba 4 Active Directory After=syslog.target After=network.target [Service] Type=forking PIDFile=/usr/local/samba/var/run/samba.pid ExecStart=/usr/local/samba/sbin/samba [Install] WantedBy=multi-user.target [root@samba4 ~]# [root@samba4 ~]# systemctl enable samba Created symlink from /etc/systemd/system/multi-user.target.wants/samba.service to /etc/systemd/system/samba.service. [root@samba4 ~]# systemctl start samba
Добавление узла Windows к домену
Пульт дистанционного управления 192.168.1.191 win 10
Убедитесь, что хост добавлен статическим IP-адресом..
Добавление хоста к домену.
Для управления samba4 с помощью Windows, мы должны иметь установленные инструменты Microsoft Remote Server (RSAT)..
Установка инструментов RSAT в Windows 10
Запустите установщик.
После перезагрузки перейдите к введению dsa.msc
Выберите домен my.domain и щелкните правой кнопкой мыши новый -> Пользователи.
Создание тестового пользователя.
Аутентификация клиента Samba 4 на CentOS 7
192.168.1.22 - клиент Аутентификация - CentOS 7
Установка пакетов:
[root]# yum -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-common
Проверьте соединение с Samba 4:
[root@centos7 ~]# realm discover my.domain my.domain type: kerberos realm-name: my.domain domain-name: my.domain configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools login-formats: %U login-policy: allow-realm-logins [root@centos7 ~]#
Присоединение к домену.
[root@centos7 ~]# realm join my.domain Password for Administrator: [root@centos7 ~]#
Проверьте, способны ли мы получить пользователя от samba4..
[root@centos7 ~]# id SUNIL\\testuser uid=1570001104(Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) gid=1570000513(domain Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) groups=1570000513(domain Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) [root@centos7 ~]#
Настройка sssd.
[root@centos7 ~]# cat /etc/sssd/sssd.conf [sssd] domains = my.domain config_file_version = 2 services = nss, pam [domain/my.domain] ad_domain = my.domain krb5_realm = my.domain realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = ad [root@centos7 ~]#
Перезагрузка sssd.
[root@centos7 ~]# systemctl restart sssd [root@centos7 ~]# systemctl enable sssd
Проверка пользователя.
[root@centos7 ~]# id Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. uid=1570001105(Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) gid=1570000513(domain Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) groups=1570000513(domain Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.),1570000512(domain Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.),1570000572(denied rodc password replication Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) [root@centos7 ~]#
Получите пользователя без имени домена.
[root@centos7 ~]# vim /etc/sssd/sssd.conf ----------- ------------ use_fully_qualified_names = False ----------- -----------
<pПерезапустите SSSD и проверить идентификатор команды..
[root@centos7 ~]# systemctl restart sssd [root@centos7 ~]# id sambauser uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group) [root@centos7 ~]#
Аутентификация клиента с Samba 4 на CentOS 6
192.168.1.192 - Аутентификация клиента Samba 4 на CentOS 6.
Установка пакетов.
[root@centos6 db]# yum install pam pam_ldap pam_krb5 sssd sssd-ldap sssd-common authconfig oddjob oddjob-mkhomedir openldap openldap-clients krb5-workstation adcli -y
Измените файл конфигурации Kerberos..
[root@centos6 db]# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = my.domain dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] my.domain = { kdc = samba4.my.domain admin_server = samba4.my.domain } [domain_realm] .my.domain = my.domain my.domain = my.domain [root@centos6 db]#
Мы будем использовать adcli команду, для того,чтобы присоединиться к домену..
[root@centos6 db]# adcli info my.domain
[domain]
domain-name = my.domain
domain-short = SUNIL
domain-forest = my.domain
domain-controller = samba4.my.domain
domain-controller-site = Default-First-Site-Name
domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret
domain-controller-usable = yes
domain-controllers = samba4.my.domain
[computer]
computer-site = Default-First-Site-Name
[root@centos6 db]#
[root@centos6 db]# adcli join my.domain
Password for Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.:
[root@centos6 db]#
Убедитесь, что билет kerberos создан.
[root@centos6 db]# klist -ke
Настройка аутентификации.
[root@centos6 db]# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
Изменение конфигурации SSSD , проверка подлинности..
[root@centos6 db]# cat /etc/sssd/sssd.conf [sssd] services = nss, pam, ssh, autofs config_file_version = 2 domains = my.domain [domain/my.domain] id_provider = ad # Uncomment if service discovery is not working # ad_server = server.win.example.com default_shell = /bin/bash fallback_homedir = /home/%u [root@centos6 db]#
Перезапустите службу sssd.
[root@centos6 db]# chkconfig sssd on [root@centos6 db]# service sssd restart Stopping sssd: [ OK ] Starting sssd: [ OK ] [root@centos6 db]#
Проверка пользователя.
[root@centos6 db]# id sambauser uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group) [root@centos6 db]#
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux