Samba installeren en configureren op RHEL 8 / CentOS 8

  • Matthew Stevenson
  • 0
  • 4085
  • 625
>

Samba biedt server- en clientsoftware om het delen van bestanden tussen Linux- en Windows-machines mogelijk te maken. Het installeren en configureren op RHEL 8 / CentOS 8 is vrij eenvoudig. Blijf lezen om te leren hoe je een directory deelt met samba, en hoe je de juiste SELinux-context erop toepast.

In deze tutorial leer je:
  • Hoe samba op RHEL8 te installeren
  • De smb- en nmb-daemons inschakelen en starten
  • Hoe u een samba-share maakt
  • Hoe de firewall zo in te stellen dat toegang tot samba share mogelijk is
  • Hoe je de juiste SELinux context instelt zodat samba correct werkt
Samba deelt op RHEL 8 / CentOS 8

Gebruikte softwarevereisten en -conventies

Softwarevereisten en Linux Command Line-conventies
Categorie Vereisten, conventies of gebruikte softwareversie
Systeem Red Hat Enterprise Linux 8
Software Samba, coreutils en policycoreutils-python-utils-pakketten
Andere Toestemming om het commando uit te voeren met root-privileges.
Conventies # - vereist dat gegeven linux-commando's worden uitgevoerd met root-privileges, hetzij direct als rootgebruiker, hetzij door gebruik van sudo opdracht
$ - vereist dat gegeven linux-commando's worden uitgevoerd als een gewone niet-geprivilegieerde gebruiker

Introductie van Samba

Samba, zoals vermeld op de homepage van het project, is een open source software, uitgebracht onder de GPL licentie, waarmee we bestanden en afdrukservices kunnen delen met behulp van de SMB / CIFS protocol.
Het project biedt zowel server- als clientsoftware om interoperabiliteit met Windows-machines mogelijk te maken, wat de ideale oplossing is in gemengde omgevingen. In deze tutorial zullen we zien hoe je Samba op Red Hat Enterprise Linux 8 installeert, hoe je een samba-share instelt, hoe je de firewall instelt om toegang tot gedeelde bronnen toe te staan, en hoe je de juiste SELinux-context toepast..

Installatie

Het eerste dat we moeten doen, is samba op onze computer installeren. Het pakket en de benodigde bibliotheken zijn beschikbaar in de officiële RHEL 8 / CentOS 8-repositories, daarom kunnen we ze installeren door gewoon yum of dnf te gebruiken. In deze versie van RHEL / CentOS is het eerste commando slechts een "link" naar het tweede:

$ sudo dnf installeer samba samba-client

Het samba-client-pakket is niet strikt nodig, maar de hulpprogramma's die het biedt, kunnen nuttig zijn. Zodra de pakketten zijn geïnstalleerd, moeten we het smb en de nmb daemons bij het opstarten. De eerste is de daemon die zorgt voor het uitvoeren van de daadwerkelijke overdrachten en de deelbewerkingen, terwijl de tweede de NetBIOS naamresoluties, waardoor de bronnen kunnen worden weergegeven tijdens het bladeren door het netwerk op Windows. We kunnen nu beide systemd-services inschakelen en starten met slechts één opdracht:

$ sudo systemctl enable --nu smb, nmb

Configureren van de firewall

De volgende stap is de firewallconfiguratie. We moeten de juiste poorten openen, zodat de door samba gedeelde bronnen toegankelijk kunnen zijn vanaf andere machines. De standaard firewallbeheersoftware op RHEL 8 / CentOS 8 is firewalld.
Gelukkig voor ons is het niet nodig om poorten handmatig te openen: het enige wat we hoeven te doen is de "samba" -service aan onze zone toe te voegen. Een "service" is slechts een abstractie die ons in staat stelt verkeer door alle poorten te laten gaan die nodig zijn voor een service, door te verwijzen naar de servicenaam, in plaats van elke poort die erdoor wordt gebruikt in te stellen (en te onthouden). Als we informatie willen verzamelen over een "dienst", kunnen we uitvoeren:

$ sudo firewall-cmd --info-service samba samba-poorten: 137 / udp 138 / udp 139 / tcp 445 / tcp protocollen: source-ports: modules: netbios-ns bestemming: 

Uit de uitvoer van het commando zien we dat de service verkeer toestaat via de poorten 173 / udp, 138 / udp, 139 / tcp en 445 / tcp. Om de service permanent aan de standaardzone toe te voegen, kunnen we uitvoeren:

$ sudo firewall-cmd --permanent --add-service = samba

Bij het uitvoeren van de opdracht hebben we de --permanent switch om onze verandering blijvend te maken. We gingen er ook vanuit dat de standaard zone die in gebruik is. Als we een andere zone wilden specificeren waarop de actie moet worden toegepast, zouden we de --zone optie, en gaf de zonenaam als argument (bijv. --zone = extern). Aangezien onze wijziging permanent is, moeten we de firewallconfiguratie opnieuw laden om deze van kracht te laten worden:

$ sudo firewall-cmd --reload


We kunnen verifiëren dat de "samba" -service nu deel uitmaakt van onze zone door het volgende uit te voeren:

$ sudo firewall-cmd --list-services cockpit dhcpv6-client http samba ssh 

Nogmaals, als er geen zone is opgegeven, wordt de opdracht toegepast op de standaardzone.

Een gedeelde map configureren die toegankelijk is voor gasten

Laten we zeggen dat we een directory willen delen via samba, en we willen gastgebruikers gratis toegang geven tot deze directory, zonder dat ze een wachtwoord hoeven op te geven. Om het gewenste resultaat te verkrijgen, moeten we enkele wijzigingen aanbrengen in het /etc/samba/smb.conf bestand, en voeg een "stanza" toe voor ons aandeel. Open het bestand met uw favoriete editor en in het [globaal] sectie, voeg de gemarkeerde tekst toe:

[global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap naam = cups laden printers = ja cups opties = onbewerkt kaart naar guest = slechte gebruiker 

De kaart naar guest = slechte gebruiker instructie, zal inlogpogingen met slechte gebruikersnamen toewijzen aan de standaardgastgebruiker, die standaard is niemand. Dit is nodig om anonieme toegang mogelijk te maken zonder een wachtwoord op te geven.

Na deze wijziging moeten we aan het einde van het bestand een nieuwe strofe toevoegen die aan ons aandeel is gewijd. We zullen de gedeelde bron "linuxconfig" noemen:

[linuxconfig] pad = / mnt / alleen gedeelde gast = ja 

Met de bovenstaande setup hebben we verklaard dat we de inhoud van het / mnt / gedeeld directory, zonder de noodzaak van gebruikersauthenticatie. Deze opzet is duidelijk riskant en wordt hier alleen als voorbeeld vermeld: in een real-world scenario wilt u misschien op zijn minst schrijftoegang aan gasten weigeren (u kunt dit doen door de beschrijfbaar = nee instructie). Om de wijzigingen effectief te maken, moeten we de daemons herstarten:



$ sudo systemctl herstart smb, nmb

Configureer een share die alleen toegankelijk is voor geregistreerde gebruikers

Om de toegang tot een bron te beschermen met een aanmeldingsprompt, moeten we, wanneer samba als een zelfstandige server draait, een bestaande gebruiker toevoegen aan de samba-database. De inloggegevens van deze gebruiker zijn nodig om toegang te krijgen tot de gedeelde directory. Om veiligheidsredenen is het een goede gewoonte om een ​​toegewijde gebruiker voor de taak aan te maken, de aanmaak van zijn homedirectory weg te laten en hem een ​​nep-shell toe te wijzen:

sudo adduser -M sambauser -s / sbin / nologin

De -M. optie die aan de opdracht wordt doorgegeven, is de korte vorm voor --no-create-home, dat spreekt voor zich; de -s optie, laten we in plaats daarvan een shell specificeren, in dit geval expres een ongeldige: / sbin / nologin. Op dit moment hoeft de gebruiker niet eens een wachtwoord op ons systeem te hebben ingesteld.

Zodra de gebruiker is aangemaakt, moeten we deze toevoegen aan de samba-database: we kunnen de bewerking uitvoeren met behulp van de smbpasswd opdracht:

$ sudo smbpasswd -a sambauser Nieuw SMB-wachtwoord: Typ het nieuwe SMB-wachtwoord opnieuw: gebruiker sambauser toegevoegd. 

Na het uitvoeren van het commando, wordt ons gevraagd om een ​​wachtwoord voor de gebruiker toe te wijzen, en ook om het te bevestigen: dit wachtwoord is alleen geldig in de samba-context, heeft niets te maken met het gebruikersaccount op ons systeem. Om de share die we eerder hebben gemaakt te beperken, moeten we een kleine wijziging aanbrengen in de speciale sectie:

[linuxconfig] pad = / mnt / gedeeld gast ok = nee 

We kunnen controleren of onze setup geldig is door de testparm opdracht:

$ testparm Laad smb-configuratiebestanden van /etc/samba/smb.conf rlimit_max: verhoging van rlimit_max (1024) tot minimum Windows-limiet (16384) Verwerkingssectie "[homes]" Verwerkingssectie "[printers]" Verwerkingssectie "[print $] "Verwerkingssectie" [linuxconfig] "Geladen servicesbestand OK. Serverrol: ROLE_STANDALONE 

Nogmaals, we moeten het smb en nmb daemons voor onze veranderingen om effectief te zijn. De gedeelde map is nu alleen toegankelijk na het verstrekken van de juiste inloggegevens.

Stel SELinux in voor samba

SELinux wordt vaak gezien als een complicatie en wordt meteen uitgeschakeld. Dit is niet nodig: we hoeven alleen maar te leren hoe we het moeten configureren en profiteren van de verbeterde beveiliging die het biedt. Om onze samba-share te laten werken als SELinux zich in de "afdwingende" modus bevindt, moeten we de juiste context aan onze gedeelde map en bestanden toewijzen:

$ sudo chcon -R -t samba_share_t / mnt / gedeeld

In het bovenstaande voorbeeld hebben we de chcon commando met de -t optie, om het TYPE sectie van de SELinux context naar samba_share_t. We hebben ook de -R. switch om het commando recursief te maken. Deze wijziging zal een herstart overleven, maar geen herlabeling van het systeem als er een standaardbeleid bestaat voor onze directory en bestanden, omdat in dat geval de standaardinstellingen opnieuw worden toegepast..
Als we willen dat onze verandering een heretiketteringsgebeurtenis overleeft, moeten we onze regel aan het beleid toevoegen. We kunnen dit doen door de semanage opdracht:

$ sudo semanage fcontext -a -t samba_share_t "/mnt/shared(/.*)?"

Omdat we de (/.*)? regex, wordt de regel toegepast op alle inhoud van de "gedeelde" directory en op de directory zelf. We kunnen controleren of onze regel is toegevoegd aan het beleid door de labels op te sommen die in ons systeem worden gebruikt:

$ sudo semanage fcontext -l | grep / mnt / gedeeld / mnt / gedeeld(/.*)? alle bestanden system_u: object_r: samba_share_t: s0 

We zouden nu een werkende samba-setup moeten hebben. Om de samba-configuratie verder aan te passen, moeten we mogelijk ook SELinux booleans manipuleren. Als we bijvoorbeeld bestaande gebruikers aan samba toevoegen, om hun homedirectory's te laten delen, moeten we de speciale SELinux boolean inschakelen. Om alle booleans met betrekking tot samba weer te geven, kunnen we uitvoeren:



sudo semanage boolean -l | grep samba samba_create_home_dirs (uit, uit) Sta samba toe om home-dirs te maken samba_domain_controller (uit, uit) Sta samba toe aan domeincontroller samba_enable_home_dirs (uit, uit) Sta samba toe om home-dirs in te schakelen samba_export_all_ro (uit, uit) samba om alle ro samba_export_all_rw te exporteren (uit, uit) Sta samba toe om alle rw samba_load_libgfapi te exporteren (uit, uit) Sta samba toe om libgfapi te laden samba_portmapper (uit, uit) Sta samba toe om te portmapper samba_run_unconfined (uit, uit) Sta samba toe om unconfined te draaien samba_share_fus (uit, uit) Sta samba toe om fusefs te delen samba_share_nfs (uit, uit) Sta samba toe om te delen nfs sanlock_use_samba (uit, uit) Sta sanlock toe om samba te gebruiken tmprarter_use_samba (uit, uit) Sta tmpr Further toe om samba te gebruiken use_samba_home_dirs (uit, uit) Toestaan gebruik om samba home dirs virt_use_samba (uit, uit) Sta virt toe om samba te gebruiken 

In de bovenstaande uitvoer geeft de tweede kolom de huidige waarde van de boolean aan, terwijl de derde de standaardwaarde aangeeft (beide zijn in dit geval uitgeschakeld). De boolean die we willen activeren om het delen van homedirectory's mogelijk te maken, is samba_enable_home_dirs. We kunnen de bewerking uitvoeren met behulp van de setsebool opdracht:

$ sudo setsebool samba_enable_home_dirs = 1

Conclusies

In deze tutorial hebben we gezien hoe je samba op een RHEL 8 / CentOS 8-systeem installeert. We hebben ook gezien hoe u een directory deelt, gasten toegang geeft of beperkt tot geauthenticeerde gebruikers. We hebben ook gezien hoe de firewall moet worden geconfigureerd zodat de share toegankelijk is vanaf andere machines op het netwerk.
Ten slotte hebben we gezien hoe we de benodigde veranderingen moesten uitvoeren om een ​​werkende samba-setup te hebben met SELinux in "enforcing" -modus. Als je geïnteresseerd bent in SELinux, kun je ook ons ​​artikel over het onderwerp lezen.




Niemand heeft nog op dit artikel gereageerd.

Een verzameling nuttige informatie over het Linux-besturingssysteem en nieuwe technologieën
Nieuwe artikelen, praktische tips, gedetailleerde recensies en handleidingen. Voel je thuis in de wereld van het Linux-besturingssysteem