Samba Server installeren op CentOS 8

Samba is een vrije en open-source software die gebruikt kan worden om bestanden, mappen en printers te delen tussen Linux en Windows systemen. Het wordt ook gebruikt voor Authenticatie en Autorisatie, Naamresolutie en Dienstmededeling. Het kan op verschillende besturingssystemen draaien, waaronder, Linux, Unix, OpenVMS en nog veel meer.

In deze handleiding leren we hoe Samba te installeren en in te stellen als een stand-alone sharing server op CentOS 8.

Vereisten

  • Een server die CentOS 8 draait.
  • Een root wachtwoord is op je server ingesteld.

Installeer Samba server

Standaard is het Samba pakket beschikbaar in de CentOS standaard repository. Je kunt het installeren met het volgende commando:

dnf install samba samba-common samba-client -y

Na de installatie van Samba start je de SMB dienst en zet je hem aan om te starten na systeem herstart met het volgende commando:

systemctl start smb
systemctl enable smb

Je kunt nu de Samba dienst verifiëren met het volgende commando:

systemctl status smb

Je zou de volgende uitvoer moeten krijgen:

? smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-02 23:03:30 EST; 8s ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 2072 (smbd)
   Status: "smbd: ready to serve connections..."
    Tasks: 4 (limit: 25028)
   Memory: 33.8M
   CGroup: /system.slice/smb.service
           ??2072 /usr/sbin/smbd --foreground --no-process-group
           ??2074 /usr/sbin/smbd --foreground --no-process-group
           ??2075 /usr/sbin/smbd --foreground --no-process-group
           ??2076 /usr/sbin/smbd --foreground --no-process-group

Een publieke share maken met Samba

In dit onderdeel maken we een publiek deel met Samba zodat iedereen zonder wachtwoord toegang heeft tot de publieke deeldirectory.

Maak een map voor openbaar delen

Maak eerst een gedeelde map met de naam public en maak ook twee bestanden aan binnen de public map:

mkdir -p /samba/share/public
touch /samba/share/public/file1.txt
touch /samba/share/public/file2.txt

Ken vervolgens de nodige permissies en eigendom toe met het volgende commando:

chmod -R 0755 /samba/share/
chmod -R 0755 /samba/share/public
chown -R nobody:nobody /samba/share
chown -R nobody:nobody /samba/share/public

Samba configureren

Vervolgens moet je Samba configureren om een publieke directory te delen.

Maak eerst een reservekopie van het bestand /etc/samba/smb.conf met het volgende commando:

mv /etc/samba/smb.conf /etc/samba/smb.bak

Maak vervolgens een nieuw Samba configuratiebestand:

nano /etc/samba/smb.conf

Voeg de volgende regels toe:

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = samba-server
security = user
map to guest = bad user
dns proxy = no

[Public]
path = /samba/share/public
browsable =yes
writable = yes
guest ok = yes
read only = no

Sla het bestand op en sluit het. Herstart daarna de Samba dienst om de veranderingen toe te passen:

systemctl restart smb

Test vervolgens de Samba configuratie met het volgende commando:

testparm

Je zou de volgende uitvoer moeten zien:

Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	dns proxy = No
	map to guest = Bad User
	netbios name = SAMBA-SERVER
	security = USER
	server string = Samba Server %v
	idmap config * : backend = tdb


[Public]
	guest ok = Yes
	path = /samba/share/public
	read only = No

Configureer SELinux en Firewall

Stel vervolgens de juiste SELinux boolean en beveiligingscontext waarden in op de share directory met het volgende commando:

setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
semanage fcontext -a -t samba_share_t "/samba/share/public(/.*)?"
restorecon /samba/share/public

Stel vervolgens alle Samba diensten in via firewalld met het volgende commando:

firewall-cmd --add-service=samba --zone=public --permanent
firewall-cmd --reload

Open het Samba aandeel vanuit Ubuntu Gnome

Om het Samba aandeel te benaderen ga je naar de externe machine, open je de Gnome bestandsmanager en klik je op de knop Verbind met server, zoals hieronder:

Toegang tot SAMBA vanuit Gnome

Geef het IP adres van je Samba server op en klik op de knop Connect. Na een geslaagde verbinding zou je het Samba aandeel in het volgende scherm moeten zien:

Samba aandeel in Bestandsverkenner

Klik nu op de Public directory, je zou je bestanden in het volgende scherm moeten zien:

Bestandenlijst

Samba aandeel benaderen vanaf de Ubuntu commando-regel

Je kunt het Samba aandeel ook vanaf de commando-regel benaderen.

Maak eerst een lijst van alle beschikbare Samba delen met het volgende commando:

smbclient -L //45.58.38.51

Je zou de volgende uitvoer moeten zien:

Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.10.4]

	Sharename       Type      Comment
	---------       ----      -------
	Public          Disk      
	IPC$            IPC       IPC Service (Samba Server 4.10.4)
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.10.4]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------

Je kunt het Samba aandeel ook aankoppelen met het cifs protocol. Installeer daartoe het pakket cifs-utils met het volgende commando:

apt-get install cifs-utils -y

Koppel vervolgens het Samba aandeel aan in de map /mnt met het volgende commando:

mount -t cifs //45.58.38.51/public /mnt/

Je wordt gevraagd een wachtwoord op te geven zoals hieronder:

Password for [email protected]//45.58.38.51/public: 

Druk gewoon op Enter zonder een wachtwoord in te voeren om het Samba aandeel te mounten:

Je kunt nu het Samba aandeel in de /mnt direcotry benaderen:

ls /mnt/

Je zou de volgende uitvoer moeten zien:

file1.txt  file2.txt

Privé deel maken met Samba

In dit onderdeel maken we een privé deel met Samba zodat alleen geauthenticeerde gebruikers de privé gedeelde map kunnen benaderen.

Maak gebruiker en groep

Maak eerst een groep met de naam private met het volgende commando:

groupadd private

Maak vervolgens een nieuwe gebruiker met de naam privateuser en voeg die toe aan de private groep:

useradd -g private privateuser

Stel vervolgens het wachtwoord voor de gebruiker in met het volgende commando:

smbpasswd -a privateuser

Uitvoer:

New SMB password:
Retype new SMB password:
Added user privateuser.

Maak een privé gedeelde map

Maak vervolgens een gedeelde map met de naam private en maak ook twee bestanden aan binnen de private map:

mkdir -p /samba/share/private
touch /samba/share/private/private1.txt
touch /samba/share/private/private2.txt

Wijs vervolgens de juiste toestemming en eigendom toe met het volgende commando:

chmod -R 0770 /samba/share/private
chown -R root:private /samba/share/private

Stel vervolgens SELinux context in voor de privé directory met het volgende commando:

semanage fcontext –at samba_share_t "/samba/share/private(/.*)?"
restorecon /samba/share/private

Configureer Samba

Open vervolgens het Samba configuratiebestand en definieer het privé deel:

nano /etc/samba/smb.conf

Voeg de volgende regels aan het eind van het bestand toe:

[Private]
path = /samba/share/private
valid users = @private     
guest ok = no
writable = yes
browsable = yes

Bewaar en sluit het bestand en herstart dan de Samba dienst om de veranderingen toe te passen:

systemctl restart smb

Controleer vervolgens de Samba configuratie met het volgende commando:

testparm

Je zou de volgende uitvoer moeten zien:

Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	dns proxy = No
	map to guest = Bad User
	netbios name = SAMBA-SERVER
	security = USER
	server string = Samba Server %v
	idmap config * : backend = tdb


[Public]
	guest ok = Yes
	path = /samba/share/public
	read only = No


[Private]
	path = /samba/share/private
	read only = No
	valid users = @private

Samba aandeel benaderen vanaf Ubuntu commando-regel

Open eerst het beschikbare aandeel met het volgende commando:

smbclient -L //45.58.38.51

Je zou de volgende uitvoer moeten zien:

Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.10.4]

	Sharename       Type      Comment
	---------       ----      -------
	Public          Disk      
	Private         Disk      
	IPC$            IPC       IPC Service (Samba Server 4.10.4)
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.10.4]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------

Maak vervolgens verbinding met de Samba server en lijst het beschikbare aandeel op met het volgende commando:

smbclient //45.58.38.51/private -U privateuser

Je wordt gevraagd een wachtwoord op te geven zoals hieronder:

Enter privateuser's password: 

Typ je wachtwoord en druk op Enter om toegang te krijgen tot de Samba shell zoals hieronder getoond:

Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.10.4]
smb: \>

Geef nu een lijst van de beschikbare delen met het volgende commando:

smb: \> ls

Je zou de volgende uitvoer moeten zien:

  
.                                   D        0  Tue Mar  3 10:03:22 2020
  ..                                  D        0  Tue Mar  3 10:01:56 2020
  private1.txt                        N        0  Tue Mar  3 10:03:17 2020
  private2.txt                        N        0  Tue Mar  3 10:03:22 2020

		51194 blocks of size 2097152. 49358 blocks available

Verlaat nu de Samba shell met het volgende commando:

smb: \>exit

Je kunt het Samba aandeel ook op de map /opt aankoppelen:

mount -t cifs -o user=privateuser //45.58.38.51/private /opt

Je wordt gevraagd een wachtwoord op te geven zoals hieronder:

Password for [email protected]//45.58.38.51/private:  *********

Geef je wachtwoord en druk op Enter om het Samba aandeel te mounten.

Je kunt nu je Samba aandeel in de map /opt controleren zoals hieronder getoond:

ls /opt/

Uitvoer:

private1.txt  private2.txt

Toegang tot Samba aandeel vanuit Ubuntu Gnome

Om het Samba aandeel te benaderen ga je naar de externe machine, open je de Gnome bestandsmanager en klik je op de knop Verbind met server zoals hieronder:

Toegang tot privé aandeel in Gnome

Geef het IP adres van je Samba server op en klik op de knop Connect. Na een geslaagde verbinding zou je het Samba aandeel in het volgende scherm moeten zien:

Publiek en particulier aandeel

Klik nu op de Private directory, geef je gebruikersnaam en wachtwoord op en klik dan op de knop Connect. Je zou je bestanden moeten zien in het volgende scherm:

Log in met gebruikersnaam en wachtwoord

Bestanden

Gefeliciteerd! Je hebt met succes de Samba server geïnstalleerd en ingesteld op CentOS 8.