Samba Installation · 7 min read · Dec 14, 2025

Samba 4 mit Active Directory auf CentOS 7 rpm-basierte Installation mit Freigabeverwaltung

Im letzten Tutorial habe ich Ihnen gezeigt, wie Sie Samba auf CentOS 7 konfigurieren, indem Sie Samba aus dem Quellcode kompilieren, da das von RedHat bereitgestellte Paket Active Directory nicht unterstützt. Ich habe festgestellt, dass es ein Repository namens Wing gibt, das das samba4 rpm mit AD-Unterstützung bereitstellt. In diesem Tutorial werde ich dieses Repository für die Samba-Installation verwenden. Ich werde auch zeigen, wie man eine Samba-Freigabe erstellt.

In diesem Tutorial werde ich einen CentOS 7-Server mit einer Minimalinstallation als Basis verwenden, wobei SELinux aktiviert ist.

Bereiten Sie den CentOS 7-Server vor

Überprüfen Sie den SELinux-Status.

[root@samba4 ~]# sestatus
SELinux-Status:                 aktiviert
SELinuxfs-Mount:                /sys/fs/selinux
SELinux-Stammverzeichnis:         /etc/selinux
Geladene Richtlinienname:             targeted
Aktueller Modus:                   enforcing
Modus aus der Konfigurationsdatei:          enforcing
Richtlinien-MLS-Status:              aktiviert
Richtlinien-unknown ablehnen-Status:     erlaubt
Maximale Kernel-Richtlinienversion:      28
[root@samba4 ~]#

Erstellen Sie einen Eintrag in der Host-Datei mit der IP-Adresse des Servers, gefolgt vom vollständigen (fqdn) Hostnamen und dann dem lokalen Teil des Hostnamens.

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

Installieren Sie das Epel CentOS-Repository.

[root@samba4 ~]# yum install epel-release -y

Installieren Sie die grundlegenden Pakete.

[root@samba4 ~]# yum install vim wget authconfig krb5-workstation -y
    

Jetzt installieren Sie das Wing-Repo.

[root@samba4 ~]# cd /etc/yum.repos.d/
[root@samba4 yum.repos.d]# wget http://wing-net.ddo.jp/wing/7/EL7.wing.repo
[root@samba4 yum.repos.d]# sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/EL7.wing.repo
[root@samba4 yum.repos.d]# yum clean all
Geladene Plugins: fastestmirror
Bereinigen der Repos: base extras updates wing wing-source
Bereinigen von allem
Bereinigen der Liste der schnellsten Spiegel
[root@samba4 yum.repos.d]#
   

Installieren Sie Samba 4 auf CentOS 7

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

[root@samba4 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.

 
[root@samba4 ~]# rm -rf /etc/krb5.conf
[root@samba4 ~]# rm -rf /etc/samba/smb.conf
    

Samba 4-Konfiguration

Jetzt werden wir die Domänenbereitstellung durchführen.

[root@samba4 ~]# samba-tool domain provision --use-rfc2307 --interactive
 Realm [SUNIL.CC]:
 Domain [SUNIL]:
 Serverrolle (dc, member, standalone) [dc]:
 DNS-Backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS-Weiterleitungs-IP-Adresse (schreiben Sie 'none', um die Weiterleitung zu deaktivieren) [4.2.2.1]:
Administrator-Passwort:
Passwort erneut eingeben:
Suche nach IPv4-Adressen
Suche nach IPv6-Adressen
Es wird keine IPv6-Adresse zugewiesen
Einrichten von secrets.ldb
Einrichten des Registrierungsdienstes
Einrichten der Berechtigungsdatenbank
Einrichten der idmap-Datenbank
Einrichten der SAM-Datenbank
Einrichten der sam.ldb-Partitionen und -Einstellungen
Einrichten von sam.ldb rootDSE
Vorladen des Samba 4- und AD-Schemas
Hinzufügen von DomainDN: DC=sunil,DC=cc
Hinzufügen des Konfigurationscontainers
Einrichten des sam.ldb-Schemas
Einrichten der Konfigurationsdaten von sam.ldb
Einrichten der Anzeige-Spezifizierer
Ändern der Anzeige-Spezifizierer
Hinzufügen des Benutzerscontainers
Ändern des Benutzerscontainers
Hinzufügen des Computercontainers
Ändern des Computercontainers
Einrichten der sam.ldb-Daten
Einrichten der bekannten Sicherheitsprinzipale
Einrichten der sam.ldb-Benutzer und -Gruppen
Einrichten des Selbstjoins
Hinzufügen von DNS-Konten
Erstellen von CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc
Erstellen von DomainDnsZones- und ForestDnsZones-Partitionen
Bevölkerung der DomainDnsZones- und ForestDnsZones-Partitionen
Einrichten von sam.ldb rootDSE als synchronisiert
Beheben der Bereitstellungs-GUIDs
Eine Kerberos-Konfiguration, die für Samba 4 geeignet ist, wurde unter /var/lib/samba/private/krb5.conf generiert
Einrichten von gefälschten yp-Servereinstellungen
Sobald die obigen Dateien installiert sind, ist Ihr Samba4-Server bereit zur Verwendung
Serverrolle:           Active Directory-Domänencontroller
Hostname:              samba4
NetBIOS-Domäne:        SUNIL
DNS-Domäne:            sunil.cc
DOMAIN SID:            S-1-5-21-1578983437-3114190590-2362936743
[root@samba4 etc]#
    

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

[root@samba4 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
[root@samba4 ~]# firewall-cmd --reload

Das Paket stellt kein Init-Skript bereit, wir werden es jetzt hinzufügen.

[root@samba4 ~]# 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
[root@samba4 ~]#
[root@samba4 ~]# systemctl enable samba
Erstellter Symlink von /etc/systemd/system/multi-user.target.wants/samba.service zu /etc/systemd/system/samba.service.
[root@samba4 ~]# systemctl restart samba

Alle anderen Schritte sind ähnlich wie in meinem vorherigen Artikel um Windows- und Linux-Hosts zu konfigurieren, siehe dazu

Installation des Samba4-Domänencontrollers aus dem Quellcode

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

Wir müssen die erweiterten ACL für samba4 konfigurieren. Fügen Sie Folgendes in die smb.conf-Datei unter global hinzu.

[root@samba4 ~]# cat /etc/samba/smb.conf
# Globale Parameter
[global]
        ------------
        -------------
        vfs objects = acl_xattr
        map acl inherit = yes
        store dos attributes = yes
        ------------
        -------------

[root@samba4 ~]#

Jetzt starten Sie den Samba-Dienst neu.

[root@samba4 ~]# systemctl restart samba

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

[root@samba4 ~]# net rpc rights grant "SUNIL\Domain Admins" SeDiskOperatorPrivilege -U "USER\administrator"
Geben Sie das Passwort von USER\administrator ein:
Rechte erfolgreich gewährt.
[root@samba4 ~]#

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

Wir können die übliche Methode nicht verwenden, da das vorhandene Paket von Wing mit den von RedHat bereitgestellten Paketen in Konflikt steht, wir können hier sssd nicht verwenden. Wir werden winbind verwenden, 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.

[root@samba4 ~]#yum -y install authconfig-gtk*

Führen Sie den Befehl aus.

[root@samba4 yum.repos.d]# authconfig-tui

Bitte wählen Sie winbind aus und folgen Sie den nächsten Schritten.

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

Kommentieren Sie dann die Zeilen in /etc/samba/smb.conf aus und starten Sie den Samba-Dienst neu.

Ihre Konfiguration sollte so aussehen:

[root@samba4 ~]# cat /etc/samba/smb.conf
# Globale Parameter
[global]
#--authconfig--start-line--

# Generiert von authconfig am 2017/05/26 17:23:04
# DIESE SEKTION NICHT BEARBEITEN (begrenzt durch --start-line--/--end-line--)
# Jede Änderung kann von authconfig in Zukunft gelöscht oder geändert werden

#   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
[root@samba4 ~]#
[root@samba4 ~]# systemctl restart samba

Überprüfen Sie, ob wir in der Lage sind, die Benutzer und Gruppen zu befüllen:

[root@samba4 ~]# wbinfo -u
SUNIL\administrator
SUNIL\sambauser
SUNIL\testuser
SUNIL\krbtgt
SUNIL\guest
[root@samba4 ~]# 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
[root@samba4 ~]#

Ändern Sie die Zeilen in nsswitch.conf:

[root@samba4 ~]# 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 jetzt, ob wir in der Lage sind, den Benutzernamen mit dem id-Befehl zu erhalten:

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

Erstellen einer Samba-Freigabe

Ich werde zwei Freigaben erstellen, eine, die nur von testuser zugänglich ist, und die andere Freigabe, die von allen Benutzern in der Domänengruppe “Domain Users” zugänglich ist.

Die Freigabe, die von testuser zugänglich ist, wird testshare genannt.

Die Freigabe, die von allen Benutzern zugänglich ist, wird commonshare genannt.

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

Fügen Sie jetzt die Einträge in smb.conf hinzu

[root@samba4 ~]# cat /etc/samba/smb.conf
# Globale Parameter
[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 = Testfreigabe, die von testuser zugänglich ist
        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 = Zugänglich für alle Benutzer
          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
[root@samba4 ~]#

Starten Sie den Samba-Dienst neu.

[root@samba4 ~]# systemctl restart samba

Greifen Sie als Testbenutzer auf die Samba-Freigabe zu.

Hier sehen Sie, dass sowohl testshare als auch commonshare sichtbar sind.

Getestet das Erstellen von Dateien und Ordnern unter testshare.

[root@samba4 /]# cd /testshare/
[root@samba4 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
[root@samba4 testshare]#

Jetzt melde ich mich als ein anderer Benutzer an, nur commonshare ist sichtbar:

Erstellen von Dateien unter commonshare.

[root@samba4 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
[root@samba4 commonshare]#

So erstellen wir Freigaben unter Samba 4.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.