Samba 4 mit Active Directory auf CentOS 7 – rpm basierte Installation mit Share-Unterstützung

In diesem Tutorial werde ich SAMBA mit AD Unterstützung unter Verwendung von Paketen aus dem Wing Repository installieren. Weiterhin werde ich zeigen wie man eine Samba-Freigabe erstellt. Es wird ein CentOS 7-Server mit einer minimalen Installation als Basis verwendet mit aktiviertem SELinux.

Vorbereiten des CentOS 7 Servers

Überprüfen Sie den SELinux-Status.

[[email protected] ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
[[email protected] ~]#

Machen Sie einen Eintrag in der Hostdatei mit der Server-IP-Adresse, gefolgt vom vollständigen (fqdn) Hostnamen und dann dem lokalen Teil des Hostnamens.

[[email protected] ~]# 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.sunil.cc samba4
[[email protected] ~]#

Installieren Sie das Epel CentOS-Repository.

[[email protected] ~]# yum install epel-release -y

Installieren Sie die Basispakete.

[[email protected] ~]# yum install vim wget authconfig krb5-workstation -y

Montieren Sie nun das Flügel-Repo.

[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# wget http://wing-net.ddo.jp/wing/7/EL7.wing.repo
[[email protected] yum.repos.d]# sed -i '[email protected][email protected][email protected]' /etc/yum.repos.d/EL7.wing.repo
[[email protected] yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras updates wing wing-source
Cleaning up everything
Cleaning up list of fastest mirrors
[[email protected] yum.repos.d]#

Samba 4 auf CentOS 7 installieren

Installation der Samba4-Pakete aus dem Wing-Repository mit yum.

[[email protected] yum.repos.d]# yum install -y samba45 samba45-winbind-clients samba45-winbind samba45-client\
samba45-dc samba45-pidl samba45-python samba45-winbind-krb5-locator perl-Parse-Yapp\
perl-Test-Base python2-crypto samba45-common-tools

Entfernen Sie diese Dateien.

 
[[email protected] ~]# rm -rf /etc/krb5.conf
[[email protected] ~]# rm -rf /etc/samba/smb.conf

Samba 4 Konfiguration

Nun werden wir die Domain-Bereitstellung vornehmen.

[[email protected] ~]# samba-tool domain provision --use-rfc2307 --interactive
 Realm [SUNIL.CC]:
 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 4 has been generated at /var/lib/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:            sunil.cc
DOMAIN SID:            S-1-5-21-1578983437-3114190590-2362936743
[[email protected] etc]#

Stellen Sie sicher, dass die Ports in der Firewall geöffnet sind.

[[email protected] 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-3500/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent
[[email protected] ~]# firewall-cmd --reload

Das Paket enthält das Initskript nicht, wir werden es jetzt hinzufügen.

[[email protected] ~]# cat  /etc/systemd/system/samba.service
[Unit]
Description= Samba 4 Active Directory
After=syslog.target
After=network.target

[Service]
Type=forking
PIDFile=/var/run/samba.pid
ExecStart=/usr/sbin/samba

[Install]
WantedBy=multi-user.target
[[email protected] ~]#
[[email protected] ~]# systemctl enable samba
Created symlink from /etc/systemd/system/multi-user.target.wants/samba.service to /etc/systemd/system/samba.service.
[[email protected] ~]# systemctl restart samba

Erstellung der Samba-Freigabe mit Windows ACL-Unterstützung

Wir müssen die erweiterte ACL für samba4 konfigurieren. Füge folgendes in der Datei smb.conf unter global hinzu.

[[email protected] ~]# cat /etc/samba/smb.conf
# Global parameters
[global]
        ------------
		-------------
        vfs objects = acl_xattr
        map acl inherit = yes
        store dos attributes = yes
		------------
		-------------

[[email protected] ~]#

Starten Sie nun den Samba-Dienst neu.

[[email protected] ~]# systemctl restart samba

Nur Benutzer und Gruppen, denen das SeDiskOperatorPrivilege-Privileg gewährt wurde, können Freigabeberechtigungen konfigurieren.

[[email protected] ~]# net rpc rights grant "SUNIL\Domain Admins" SeDiskOperatorPrivilege -U "USER\administrator"
Enter USER\administrator's password:
Successfully granted rights.
[[email protected] ~]#

Bevor wir die Freigabe erstellen, müssen wir sicherstellen, dass sich der samba4-Server mit sich selbst authentifiziert.

Wir können die übliche Methode nicht anwenden, da es nicht funktioniert, da das bestehende Paket vom Flügel mit den von RedHat gelieferten Paketen kollidiert, wir können sssd hier nicht verwenden. winbind wird verwendet, um dies zum Laufen zu bringen.

Bitte verwenden Sie die folgende Methode. Dies ist erforderlich, um die Samba-Freigabe mit bestimmten Berechtigungen zu erstellen.

Installieren Sie das folgende Paket.

[[email protected] ~]#yum -y install authconfig-gtk*

Führen Sie den Befehl aus.

[[email protected] yum.repos.d]# authconfig-tui

Bitte wählen Sie die Windbindung aus, folgen Sie den nächsten Schritten.

Sie können das Passwort nicht eingeben, drücken Sie einfach auf OK.

Dann kommentieren Sie Zeilen in /etc/samba/smb.conf aus und starten Sie den Samba-Dienst neu.

Ihre Konfiguration sollte wie folgt aussehen:

[[email protected] ~]# cat /etc/samba/smb.conf
# Global parameters
[global]
#--authconfig--start-line--

# Generated by authconfig on 2017/05/26 17:23:04
# DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--)
# Any modification may be deleted or altered by authconfig in future

#   workgroup = SUNIL
#   password server = samba4.sunil.cc
#   realm = SUNIL.CC
#   security = ads
#   idmap config * : range = 16777216-33554431
#   template shell = /sbin/nologin
#  kerberos method = secrets only
#   winbind use default domain = false
#   winbind offline logon = false

#--authconfig--end-line--
        netbios name = SAMBA4
        realm = SUNIL.CC
        workgroup = SUNIL
        dns forwarder = 4.2.2.1
        server role = active directory domain controller
        idmap_ldb:use rfc2307 = yes
        vfs objects = acl_xattr
        map acl inherit = yes
        store dos attributes = yes

[netlogon]
        path = /var/lib/samba/sysvol/sunil.cc/scripts
        read only = No

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
[[email protected] ~]#
[[email protected] ~]# systemctl restart samba

Überprüfen Sie, ob wir die Benutzer und Gruppen besetzen können:

[[email protected] ~]# wbinfo -u
SUNIL\administrator
SUNIL\sambauser
SUNIL\testuser
SUNIL\krbtgt
SUNIL\guest
[[email protected] ~]# wbinfo -g
SUNIL\cert publishers
SUNIL\ras and ias servers
SUNIL\allowed rodc password replication group
SUNIL\denied rodc password replication group
SUNIL\dnsadmins
SUNIL\enterprise read-only domain controllers
SUNIL\domain admins
SUNIL\domain users
SUNIL\domain guests
SUNIL\domain computers
SUNIL\domain controllers
SUNIL\schema admins
SUNIL\enterprise admins
SUNIL\group policy creator owners
SUNIL\read-only domain controllers
SUNIL\dnsupdateproxy
[[email protected] ~]#

Ändern Sie die Zeilen in der nsswitch.conf:

[[email protected] ~]# cat /etc/nsswitch.conf
----------
---------
passwd:     files winbind
shadow:     files winbind
group:      files winbind
hosts:      files dns wins
services:   files winbind
netgroup:   files winbind

---------
----------

Überprüfen Sie nun, ob wir den Benutzernamen mit dem Befehl id erhalten können:

[[email protected] ~]# id testuser
uid=3000019(SUNIL\testuser) gid=100(users) groups=100(users),3000019(SUNIL\testuser),3000009(BUILTIN\users)
[[email protected] ~]#

Erstellen einer Samba-Freigabe

Ich werde zwei Freigaben erstellen, eine, die nur für Testbenutzer zugänglich ist und die andere, die für alle Benutzer der Domänenbenutzergruppe zugänglich ist.

Die Freigabe, auf die der Tester zugreifen kann, wird als Testshare bezeichnet.

Die Freigabe, auf die alle Benutzer Zugriff haben, wird als Commonshare bezeichnet.

[[email protected] ~]# mkdir /testshare
[[email protected] ~]# mkdir /commonshare
[[email protected] ~]# chmod 770 /testshare
[[email protected] ~]# chmod 770 /commonshare
[[email protected] ~]# chown -R root:testuser /testshare
[[email protected] ~]# chown -R root:"Domain Users" /commonshare

Füge nun die Einträge in der smb.conf hinzu.

[[email protected] ~]# cat /etc/samba/smb.conf
# Global parameters
[global]
        netbios name = SAMBA4
        realm = SUNIL.CC
        workgroup = SUNIL
        dns forwarder = 4.2.2.1
        server role = active directory domain controller
        idmap_ldb:use rfc2307 = yes
        vfs objects = acl_xattr
        map acl inherit = yes
        store dos attributes = yes

[netlogon]
        path = /var/lib/samba/sysvol/sunil.cc/scripts
        read only = No

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
[TestShare]
        comment = Test share accessible by testuser
        path = /testshare
        valid users = SUNIL\testuser
        writable = yes
        read only = no
        force create mode = 0660
        create mask = 0770
        directory mask = 0770
        force directory mode = 0770
        access based share enum = yes
        hide unreadable = yes
[CommonShare]
         comment = Accessible by all the users
          path = /commonshare
          valid users = "@SUNIL\Domain Users"
          writable = yes
        read only = no
        force create mode = 0660
        create mask = 0777
        directory mask = 0777
        force directory mode = 0770
        access based share enum = yes
        hide unreadable = yes
[[email protected] ~]#

Starten Sie den Samba-Dienst neu.

[[email protected] ~]# systemctl restart samba

Greifen Sie als Testbenutzer auf die Samba-Freigabe zu.

Hier sehen Sie, dass sowohl Testshare als auch Commonshare sichtbar sind.

Geprüftes Erstellen von Dateien und Ordnern unter test share.

[[email protected] /]# cd /testshare/
[[email protected] testshare]# ls -l
total 8
-rwxrwx---+ 1 SUNIL\testuser users 0 May 27 22:56 1.txt
drwxrwx---+ 2 SUNIL\testuser users 6 May 27 22:56 test
[[email protected] testshare]#

Jetzt melde ich mich mit einem anderen Benutzer an, nur Commonshare ist sichtbar:

Erstellen von Dateien unter Commonshare.

[[email protected] commonshare]# ls -l
total 8
drwxrwxrwx+ 2 SUNIL\testuser  users 6 May 27 23:02 test
drwxrwxrwx+ 2 SUNIL\sambauser users 6 May 27 23:07 test2
[[email protected] commonshare]#

So erstellen wir Freigaben unter Samba 4.

Das könnte dich auch interessieren …