Detaillierte Erklärung zum Erstellen eines File-Sharing-Servers mit Samba + OPENldap

Detaillierte Erklärung zum Erstellen eines File-Sharing-Servers mit Samba + OPENldap

Hier verwende ich Samba (Filesharing-Dienst) v4.9.1 + OPENldap (Backend-Datenbanksoftware) v2.4.44 + smbldap-tools (Backend-Datenbankverwaltungssoftware) v0.9.11 + CentOS7. Wenn ein Unterschied besteht, liegt möglicherweise ein Teilproblem vor.

Notiz:

  • Die Funktion von Samba besteht nicht nur in der Dateifreigabe, sondern es kann auch als Windows-Domänenmitglied oder sogar als Windows-Domänencontroller fungieren. Denken Sie niemals, dass Samba nur ein Filesharing-Dienst ist.
  • Da wir die Dateifreigabefunktion von Samba verwenden, die direkt mit den Dateiberechtigungen zusammenhängt, müssen die in Samba verwendeten Benutzer in Linux durchsuchbar sein. Da OPENldap als Back-End-Datenbank von Samba verwendet wird, müssen wir Linux auch so konfigurieren, dass die Benutzerinformationen in OPENldap abgefragt werden, d. h. wir müssen NSS konfigurieren. Bezüglich der NSS-Konfiguration müssen Sie die NSS-Konfiguration abschließen, nachdem smbldap-tools die LDAP-Datenbank initialisiert hat. Bitte beachten! ! !
  • Samba verwendet PAM als Authentifizierungsmodul und verwendet sein eigenes Authentifizierungsprogramm. Beim Kompilieren in CentOS wird es so konfiguriert, dass es sein eigenes Authentifizierungsprogramm verwendet, sodass die Konfiguration von PAM weggelassen werden kann.
  • Wenn Sie Benutzer in OPENldap konfigurieren möchten, um sich beim System anzumelden, können Sie diesen Artikel lesen: „Linux für die Verwendung der LDAP-Benutzerauthentifizierung konfigurieren“. Die Konfiguration darin unterscheidet sich von der Konfiguration in diesem Artikel. Bitte beachten Sie! ! !

Erstkonfiguration

Das Yum-Repository und die Netzwerkkonfiguration werden weggelassen.

yum -y installiere Samba, OpenLDAP-Server, OpenLDAP-Clients, Smbldap-Tools, NSS-PAM-LDAPD

OPENldap-Dienst konfigurieren

Hier führen wir nur eine einfache Dienstkonfiguration durch. Die Datenbankkonfiguration wird mit smbldap-tools konfiguriert. Wenn Sie OPENldap nicht kennen, können Sie diesen Artikel lesen: „OPENLDAP-Dienstaufbau und Post-Management“

Löschen Sie hier alle OPENldap-Konfigurationen und konfigurieren Sie sie neu.

# Sichern Sie zuerst die Datei, falls sie nicht wiederhergestellt werden kann. mkdir /root/back
tar -Jcvf /root/back/slapd.config-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/openldap/slapd.d/
tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /var/lib/ldap/
# Löschen Sie anschließend die Konfigurationsdatei rm -rf /etc/openldap/slapd.d/*
rm -rf /var/lib/ldap/*
# Kopieren Sie eine Samba-Schemadatei cp /usr/share/doc/samba-4.9.1/LDAP/samba.ldif /etc/openldap/schema/

Ich habe die Konfigurationsdatei hier von /usr/share/openldap-servers/slapd.ldif kopiert und so geändert, dass sie wie folgt aussieht. Die wichtigsten Änderungen sind baseDN (Suffix), OPENLDAPTLS, olcRootPW (das Passwort wird von slappasswd generiert, das Passwort in diesem Artikel lautet: 123456) und include

# Datei: /tmp/slapd.ldif

dn:cn=Konfiguration
Objektklasse: olcGlobal
cn: Konfiguration
olcArgsFile: /var/run/openldap/slapd.args
olcPid-Datei: /var/run/openldap/slapd.pid

dn: cn=schema,cn=config
Objektklasse: olcSchemaConfig
cn: Schema

include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/samba.ldif

dn:olcDatabase=frontend,cn=config
Objektklasse: olcDatabaseConfig
Objektklasse: olcFrontendConfig
olcDatabase:frontend

dn: olcDatabase=Konfiguration,cn=Konfiguration
Objektklasse: olcDatabaseConfig
olcDatabase:config
olcAccess: auf * 
 durch dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" verwalten 
 von * keine

dn:olcDatabase=monitor,cn=config
Objektklasse: olcDatabaseConfig
olcDatabase: Monitor
olcAccess: auf * 
 von dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" gelesen 
 von dn.base="cn=Manager,dc=black,dc=com" gelesen 
 von * keine

dn:olcDatabase=hdb,cn=config
Objektklasse: olcDatabaseConfig
Objektklasse: olcHdbConfig
olcDatenbank: hdb
olcSuffix: dc=schwarz,dc=com
olcRootDN: cn=Manager,dc=schwarz,dc=com
olcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1Q
olcDbVerzeichnis: /var/lib/ldap
olcDbIndex: Objektklasse eq,pres
olcDbIndex: ou,cn,mail,Nachname,Vorname eq,pres,sub,uid

Generieren Sie Serverkonfigurationsdateien basierend auf der Konfiguration

slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l /tmp/slapd.ldif
# Beachten Sie, dass der Dateibesitzer immer noch root ist, Sie müssen ihn also wieder auf openldap ändern
chown -R ldap:ldap /etc/openldap/slapd.d/*
# Starten Sie dann den Dienst systemctl start slapd

_######################## 100,00 % eta, keines verstrichen, keines schnell!
DB wird geschlossen …

Hinweis: Hier wird nur der Servicekonfigurationsteil von OPENldap konfiguriert, die Datenbank von OPENldap wird nicht konfiguriert. Folgendes möchte ich noch einmal betonen.

Samba konfigurieren

Hier möchten wir nur die Verwendung von Samba und OPENldap testen, daher werden wir keine komplizierten Konfigurationen für die Dateifreigabe vornehmen. Wir werden zum Testen nur das Home-Verzeichnis eines Benutzers freigeben.

# Datei: /etc/samba/smb.conf

[global]
 Arbeitsgruppe = MYGROUP #Geben Sie den Namen der freigegebenen Gruppe an.
 Serverzeichenfolge = Samba-Serverversion %v
 log file = /var/log/samba/log # Log security = user # Geben Sie die Sicherheitsstufe als „Benutzer“ an
 passdb backend = ldapsam:ldap://127.0.0.1 # Geben Sie die Backend-Datenbank von passdb an, die ldapsam verwenden soll
 ldap suffix = dc=black,dc=com # Geben Sie das Suffix von ldap an
 ldap-Benutzersuffix = ou=People #Geben Sie das Suffixsegment des Benutzers ou=People an. Dies wird mit dem vorherigen Suffix kombiniert.
 LDAP-Gruppensuffix = ou=Gruppe # Wie oben, gibt die Benutzergruppe an.
 ldap admin dn = cn=Manager,dc=black,dc=com # Geben Sie den Administratorbenutzer an, der zum Abfragen des LDAP-Dienstes verwendet wird. ldap ssl = no # Geben Sie an, dass keine SSL-Verschlüsselung verwendet werden soll.
 Drucker laden = nein #Gibt an, dass gemeinsam genutzte Drucker nicht geladen werden sollen.
[Häuser]
 Kommentar = Home-Verzeichnisse
 durchsuchbar = nein
 beschreibbar = ja
 Maske erstellen = 0600
 Verzeichnismaske = 700
smbpasswd -w 123456 # Speichern Sie das Benutzerkennwort, das für die Verbindung mit dem LDAP-Dienst verwendet wird! ! ! Dies ist sehr wichtig, da der SMB-Dienst sonst nicht gestartet werden kann.

Starten Sie den Samba-Dienst

systemctl start nmb
systemctl starte smb

smbldap-tools-Konfiguration

Hier verwenden wir smbldap-tools, um die vom Samba-Dienst benötigten Dateninformationen schnell zu vervollständigen, und verwenden smblda-tools, um Benutzersegmente zu verwalten. Ein Nachteil von smbldap-tools besteht jedoch darin, dass es keine Rolle spielt, ob Ihre lokalen Benutzer dieselbe UID oder GID haben. Es können Konflikte auftreten. Seien Sie sich dessen also bitte bewusst.

smbldap liest einige Informationen aus /etc/samba/smb.conf, daher müssen Sie zuerst Samba und dann den Dienst smbldap-tools konfigurieren.

smbldap-config # Konfigurieren Sie die Konfiguration von smbldap-tools. Hier wird smbldap-conifg für die einfache Konfiguration verwendet. 

Der folgende Konfigurationsprozess wird hier ausgelassen. Wenn Sie es nicht wissen, ist die Standardeinstellung in Ordnung.

smbldap-populate # Initialisiert die Konfiguration der OPENldap-Datenbank. 

Legen Sie hier einen weiteren Benutzer für spätere Tests an.

smbldap-useradd -a -m User1 # Benutzer hinzufügen User2
# -a: Gibt an, dass der hinzugefügte Benutzertyp Windows ist, damit Samba den Benutzer erkennen kann.
# -m: Gibt an, dass das Home-Verzeichnis des Benutzers erstellt werden soll.
smbldap-passwd User1 #Ändern Sie das Passwort des Benutzers

Der Vorgang zur Passwortänderung für diesen Benutzer entfällt hierbei.

Auf diese Weise ist die Datenbankinitialisierung von OPENldap abgeschlossen und Sie können jetzt den Inhalt in OPENldap abfragen. Wie in der folgenden Abbildung gezeigt, ist dies der von smbldap-populate erstellte Inhalt. Die folgende Abbildung zeigt Apache Directory Studio. Wenn Sie interessiert sind, können Sie „Einfache Verwendung von Apache Directory Studio“ studieren.

In der Abbildung sehen wir Benutzer mit UID = root und nobody. Ich möchte nicht, dass sich diese speziellen Benutzer beim Server anmelden, daher werde ich in der folgenden Konfiguration diese beiden Benutzer durch Filter herausfiltern.

NSS-Konfiguration

Hier muss hauptsächlich die NSS-Konfiguration konfiguriert werden. NSS leitet LDAP-Anforderungen an nslcd weiter und nslcd fragt die Benutzerinformationen in OPENldap ab.

Konfigurieren Sie zunächst NSS. Fügen Sie einfach die LDAP-Authentifizierung zu den Abschnitten „Passwort“ und „Gruppe“ hinzu.

# Datei: /etc/nsswitch.conf

passwd: Dateien ldap
Schatten: Dateien
Gruppe: Dateien LDAP
Hosts: Dateien DNS MeinHostname
Bootparams: nisplus [NOTFOUND=return] Dateien
Ether: Dateien
Netzmasken: Dateien
Netzwerke: Dateien
Protokolle: Dateien
rpc: Dateien
Dienste: Dateien sss
Netzgruppe: nisplus sss
öffentlicher Schlüssel: nisplus
Automount: Dateien Nisplus SSS
Aliase: Dateien nisplus

Konfigurieren Sie dann nslcd. Beachten Sie, dass nslcd als Daemon ausgeführt wird und nach der Konfiguration neu gestartet werden muss.

# Datei:/etc/nslcd.conf

UID-NSLCD
gid ldap
uri ldap://127.0.0.1/ # LDAP-URL-Adresse base dc=black,dc=com # Basis-DN-Pfad binddn cn=Manager,dc=black,dc=com # Geben Sie den verbundenen Benutzer an bindpw 123456 # Geben Sie das Passwort an ssl no # Geben Sie an, dass keine SSL-verschlüsselte Verbindung verwendet werden soll.
filter passwd (&(objectClass=posixAccount)(uidNumber>=1000)) # Schreiben Sie die Filterregeln für passwd.
Filtergruppe (&(objectClass=posixGroup)(gidNumber>=500)) # Wie oben, Gruppe wird geschrieben
Kopie
chmod 600 /etc/nslcd.conf # Die Berechtigungen der Konfigurationsdatei sind sehr wichtig, da der Dienst sonst nicht gestartet werden kann.
systemctl start nslcd # Starten Sie den nslcd-Dienst.

Wir testen, ob folgende NSS-Konfiguration verfügbar ist

getent passwd User1

Benutzer1:*:1001:513:Systembenutzer:/var/smb/Benutzer1:/bin/bash

Wie oben zu sehen ist, sind die von uns konfigurierten NSS- und OPENldap-Dienste wirksam geworden. Fahren wir nun mit der Konfiguration von Samba fort, um es verfügbar zu machen.

Samba-Berechtigungskonfiguration

Wenn Sie genau hinschauen, werden Sie feststellen, dass ich den Speicherort des Benutzer-Home-Verzeichnisses in /var/smb speichere, hauptsächlich um Verwechslungen mit den Benutzern im System zu vermeiden. Und auf diese Weise kann Samba durch SELinux isoliert werden, um den Zugriff auf Ressourcen unter dem Pfad /home zu verhindern. Weitere Einzelheiten finden Sie in den folgenden Vorgängen.

# Das Home-Verzeichnis des Benutzers wurde oben durch den Befehl smbldap-useradd erstellt.
# Jetzt können Sie SELinux direkt konfigurieren.
semanage fcontext -a -t samba_share_t '/var/smb(/.*)?' # Den Standardtyp des Pfads /var/smb ändern. Hier verwende ich den Typ, der von Samba Sharing verwendet wird. SELinux erlaubt standardmäßig den Zugriff auf diesen Typ. # Wenn Sie möchten, dass Samba auf /home zugreift, sollten Sie den booleschen Wert samba_enable_home_dirs aktivieren.
# Aber hier verwende ich den Typ samba_share_t, daher muss kein Bool-Wert aktiviert werden, sodass Samba nur auf /var/smb und andere von Samba benötigte Dateien zugreifen kann.
restorecon -R /var/smb/ # Dann setzen wir den SELinux-Typ unter dem Verzeichnis /var/smb zurück.
Kopie
# Hier können wir Samba testen smbclient -L //127.0.0.1/ -U User1 

Hier sehen wir, dass sich Benutzer1 bereits anmelden und das freigegebene Verzeichnis abfragen kann.

Anschließend loggen wir uns direkt hier ein und laden einige Dateien hoch um ein paar Tests durchzuführen:


OK, dann ist eine solche Samba-Dateifreigabe abgeschlossen.


Zusammenfassen

Oben finden Sie eine ausführliche Erklärung zum Erstellen eines File-Sharing-Servers mit Samba + OPENldap. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten!

Das könnte Sie auch interessieren:
  • So verwenden Sie Samba zum Erstellen eines gemeinsamen Dateidienstes auf einem Linux-Server

<<:  Zusammenfassung der Verwendung von Element-Formularelementen

>>:  Eine kurze Analyse des Problems der Mysql 8.0-Version, das getTables dazu veranlasst, alle Datenbanktabellen zurückzugeben

Artikel empfehlen

Implementierung des CSS Fantastic Border Animation-Effekts

Heute habe ich auf der Blog-Site shoptalkshow ges...

CSS-Beispielcode zum Zeichnen eines Lutschers

Hintergrund: Machen Sie jeden Tag ein wenig Forts...

Verständnis des CSS-Selektorgewichts (persönlicher Test)

Code kopieren Der Code lautet wie folgt: <styl...

Centos8 erstellt NFS basierend auf KDC-Verschlüsselung

Inhaltsverzeichnis Konfiguration NFS-Server (nfs....

Gängige Methoden und Probleme der Docker-Bereinigung

Wenn Sie Docker für die Entwicklung im großen Maß...

Aktualisierungen für React Router V6

Inhaltsverzeichnis ReactRouterV6-Änderungen 1. &l...

Analyse der Verwendung des MySQL-Datenbankbefehls „show processlist“

Wenn bei der tatsächlichen Projektentwicklung die...

Spezielle Befehle in der MySql-Datenbankabfrage

Erstens: Installation von MySQL Laden Sie die MyS...

MySQL-Backup-Tabellenvorgang basierend auf Java

Der Kern ist mysqldump und Runtime Der Vorgang is...

JavaScript-Canvas zum Erzielen eines farbenfrohen Uhreffekts

Verwenden Sie Leinwand, um eine bunte Uhr zu schr...