Samba in debian buster 11 – via terminal


Samba è un progetto open source per le piattaforme Unix e GNU/linux che fornisce servizi di condivisione di file e stampanti a client SMB/CIFS. Samba consente di ottenere interoperabilità tra Unix, Linux, macOS e Windows. L’attuale versione è la 4.xx.xx. I demoni disponibili nella suite sono: samba (ruolo di Domain Controller), smbd (condivisione dei file e delle stampanti), nmbd: (risoluzione dei nomi del NetBIOS negli indirizzi IP), winbindd (risolve le informazioni su gruppi ed utenti ).

Per installare samba in debian 11 bullseye

~$ sudo apt install samba

Installato samba possiamo controllare che il servizio sia correttamente avviato con

maurizio@debian11:~$ sudo systemctl status smbd
● smbd.service - Samba SMB Daemon
     Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-11-21 17:13:01 CET; 20s ago
       Docs: man:smbd(8)
             man:samba(7)
             man:smb.conf(5)
    Process: 8401 ExecStartPre=/usr/share/samba/update-apparmor-samba-profile (code=exited, status=0/S>
   Main PID: 8410 (smbd)
     Status: "smbd: ready to serve connections..."
      Tasks: 4 (limit: 2325)
     Memory: 14.3M
        CPU: 284ms
     CGroup: /system.slice/smbd.service
             ├─8410 /usr/sbin/smbd --foreground --no-process-group
             ├─8412 /usr/sbin/smbd --foreground --no-process-group
             ├─8413 /usr/sbin/smbd --foreground --no-process-group
             └─8414 /usr/sbin/smbd --foreground --no-process-group

Nov 21 17:13:01 debian11 systemd[1]: Starting Samba SMB Daemon...
...

sinteticamente anche con

 $ systemctl --all|egrep 'samba|smbd|nmbd'
  nmbd.service                  loaded    active   running   Samba NMB Daemon
  smbd.service                  loaded    active   running   Samba SMB Daemon

Per controllare il demone Samba NMB

maurizio@debian11:~$ systemctl status nmbd
● nmbd.service - Samba NMB Daemon
     Loaded: loaded (/lib/systemd/system/nmbd.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-02-23 17:13:01 CET; 13min ago
       Docs: man:nmbd(8)
             man:samba(7)
             man:smb.conf(5)
   Main PID: 8400 (nmbd)
     Status: "nmbd: ready to serve connections..."
      Tasks: 1 (limit: 2325)
     Memory: 2.7M
        CPU: 109ms
     CGroup: /system.slice/nmbd.service
             └─8400 /usr/sbin/nmbd --foreground --no-process-group

Controllare la versione di samba

Per controllare la versione samba, smbd -V

root@debian11:/etc/samba# smbd -V
Version 4.13.13-Debian

Le porte usate da samba

Le porte TCP utilizzate sono la 139 e/o 445 e le porte 137 138 per UDP

per controllare le porte si può utilizzare netstat

sudo netstat -tulpn | egrep "samba|smbd|nmbd|winbind"
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      6730/smbd           
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      6730/smbd           
tcp6       0      0 :::445                  :::*                    LISTEN      6730/smbd           
tcp6       0      0 :::139                  :::*                    LISTEN      6730/smbd           
udp        0      0 192.168.77.255:137      0.0.0.0:*                           504/nmbd            
udp        0      0 192.168.77.146:137      0.0.0.0:*                           504/nmbd            
udp        0      0 0.0.0.0:137             0.0.0.0:*                           504/nmbd            
udp        0      0 192.168.77.255:138      0.0.0.0:*                           504/nmbd            
udp        0      0 192.168.77.146:138      0.0.0.0:*                           504/nmbd            
udp        0      0 0.0.0.0:138             0.0.0.0:*                           504/nmbd   

Configurare samba

Adesso con il demone attivo sarà possibile utilizzare il servizio di condivisione samba. Per poter accedere alle cartelle condivise è preferibile creare gli utenti samba, impostandone la specifica password.

Creare gli utenti samba

Per aggiungere un utente samba è necessario disporre di un utente locale.

Un utente locale esistente può essere aggiunto al database degli users samba con smbpasswd:

smbpasswd -a username
:~$ sudo smbpasswd -a mira
New SMB password:
Retype new SMB password:
Added user mira.

Se si desidera creare un nuovo utente da usare come user samba si può generare un nuovo utente locale con adduser/ useradd impostare la password e poi aggiungerlo a samba ( altre informazioni su Gestire gli users in Linux da terminale ). adduser più intereattivo è ad oggi preferibile.

maurizio@debian11:~$ sudo adduser betta
Adding user `betta' ...
Adding new group `betta' (1001) ..
Adding new user `betta' (1001) with group `betta' ...
Creating home directory `/home/betta' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for betta
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 

creato il nuovo user impostare la password al solito

maurizio@debian11:~$ sudo passwd betta
New password: 
Retype new password: 
passwd: password updated successfully

quindi impostare anche la password per samba con il solito

maurizio@debian11:~$ sudo smbpasswd -a betta
New SMB password:
Retype new SMB password:
Added user betta.

samba condividere cartelle

Per gestire le risorse da condividere con samba editare il file di configurazione  smb.conf.

sudo  nano  /etc/samba/smb.conf

La condivisione delle cartelle degli users è già predisposta ed è definita nella sezione [homes]
che è ben commentata

:~$ nano /etc/samba/smb.conf
...
[homes]

   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
   create mask = 0700

...

di default le home directories sono esportate in sola lettura

read only = yes

come indicato nel commento modificare yes per consentire allo user l’accesso anche in scrittura

read only = no

Organizzazione del blocco [homes] usata in passato e relativi parametri
...
[homes] comment = Home Directories browseable = no writable = yes valid users = @users create mask = 0700 directory mask = 0700
Parametri per samba

  • browseable        definisce se lo share è mostrato ( yes o not )  default = yes
  • hide dot file        nasconde o mstra i files nascosti ( yes o not )  default = yes
  • path                   percorso directory share – da condividere
  • create mask        default 0664   per settare i permessi sui nuovi file
  • directory mask   default 0775   permessi da assegnare alle directory
  • guest ok              permette quest access  default = no
  • valid users           quali users hanno il permesso di accedere default tutti gli users
  • invalid users
  • read only             rende uno share in sola lettura dafult = yes
  • writeable             rende uno share read/write  default = no
  • read list               elenco degli users o gruppi con il permesso di lettura
  • write list              elenco degli users o gruppi con il pemesso di scrittura

Aggiungere una condivisione pubblica

Per inserire una condivisione pubblica che non richiede username e password creare una dir pubblica esempio /srv/public:

sudo mkdir /srv/public

Assegnare i permessi di lettura scrittura ed esecuzione all’utente nobody con

sudo setfacl -R -m "u:nobody:rwx" /srv/public/

generare l’opportuno blocco per la condivizione in samba

[public]     
comment = spazio pubblico no user non pass 
dir path = /srv/public     
browseable = yes
writable = yes
guest ok = yes

Per inserire nuovi share inserire blocchi analoghi al blocco users o al precedente facendo attenzione ai parametri e ai permessi:

[Biblioteca]
    comment = Biblioteca dir
    path = /media/Biblioteca
    create mask = 0660 
    directory mask = 0770
La directory Biblioteca per condividere i files potrebbe richiedere l'assegnazione di opportuno  proprietario (chown) e anche di opportuni permessi (chmod) :
mkdir -p /media/Biblioteca
chown -R root:users /media/Biblioteca/
per i permessi di scrittura modificare i permessi con chmod
chmod -R ug+rwx,o+rx-w /media/Biblioteca/

A proposito la directory Biblioteca potrebbe essere anche un mount remoto sshfs, esempio:

sudo sshfs root@192.168.77.109:/media/sda5 /media/Biblioteca

per verificare che non ci siano errori di sintassi nel file smb.conf e possibilie utilizzare il comando:

testparm -s /etc/samba/smb.conf

Uno schema dei numeri usati per precisare i permessi: cioè un decimale per ciascuna rappresenzione binaria delle tre classi di utente, è presente in fondo al post Comandi Linux: elencare, cercare e gestire files e directories 

Riavviare samba

Quando si apportano modifiche al file smb.conf è necessario riavviare samba  con :

systemctl restart smbd nmbd
volendo consentita anche la vecchia sintassi System V
service smbd restart

Test della connessione samba

Per testare una connessione samba si può utilizzare smbclient:

maurizio@debian11:~/mnt/condivisione/CASA$ smbclient -L localhost
Enter WORKGROUP\maurizio's password: 
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	public          Disk      public share, no need to enter username and password
	Biblioteca      Disk      Biblioteca
	IPC$            IPC       IPC Service (Samba 4.13.13-Debian)

altro esempio di vecchio test smbclient:

:~$ smbclient -L 192.168.1.146 -N
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]
	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (ubuSer1210 server (Samba, Ubuntu))
	scambio-temp    Disk      condividi files e archivio temporaneo
	archivio        Disk      Biblioteca - archivio
	print$          Disk      Printer Drivers

Mount da teminale di una connessione samba

Il mounting da teminale di una cartella remota condivisa utilizza smb avviene con un comando del tipo:

mount -t cifs -o username=bepi //192.168.1.153/codice /media/biblioteca

oppure la forma contratta

mount.cifs -o user=bepi //192.168.1.153/codice /media/biblioteca

e possibile utlizzare  l’opzione  password= o pass= tuttavia, se non si ha la nìecessità di un mount permanente, meglio digitare la password solo su richiesta.

Esempio comunque di montaggio smb con inserimento della password

mount -t cifs -o user=bepi,pass=’%my.pass.’ //192.168.77.7/biblio /mnt/biblio
o
mount -t smbfs -o username=bepi,password=’%my.pass.’ //192.168.77.7/biblio  /mnt/biblio

Risorse nel blog:

Lascia un commento