[NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Networking, configurazione della connessione, periferiche e condivisioni di rete.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

[NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

***** FINCHE' SARA' PRESENTE QUESTA NOTA GLI APPUNTI SONO DA CONSIDERARSI IN VIA DI SCRITTURA *****



Condivido i miei appunti per l'installazione del server Samba, spero possano essere di aiuto.


Appunti testati su Ubuntu 22.04.
La versione precedente di questi appunti può essere consultata QUI


Non fornisco supporto su questa discussione.
Questa discussione ha il solo scopo di suggerire all'utente "inesperto" una strada molto veloce per l'installazione e configurazione del server Samba.
Questo è solo un modo per farlo! Altre scelte potrebbero essere fatte sulla base delle proprie necessità.
Per qualsiasi: correzione, osservazione o suggerimento inerente questa discussione, cortesemente, mandatemi un messaggio in privato.



Happy Linux :ciao:


Domanda:
quando devo installare il server Samba?
Risposta:
il server Samba deve essere installato quando in una rete mista, ossia in cui sono presenti sia PC Linux sia PC Windows, dal mio PC voglio condividere file, directory e stampanti.
Se dal mio PC non voglio condividere nulla di tutto ciò, ma semplicemente accedere a file, directory e stampanti condivise da un altro PC allora non devo installare il server Samba.


Nota: per la condivisione delle stampanti in rete è meglio usare il server CUPS

[HOWTO] CUPS condivisione stampante



Di seguito verrà trattata la configurazione del server Samba utilizzando il metodo "tradizionale" ossia modificando il solo file di configurazione /etc/samba/smb.conf.
Questa configurazione tratterà l'accesso alle risorse condivise MEDIANTE AUTENTICAZIONE al server Samba.
La configurazione per l'accesso alle risorse SENZA AUTENTICAZIONE al server Samba è trattata al post N° TODO.
La lettura di tutti i post è comunque consigliata per la comprensione dell'intera procedura.



L'utente che verrà utilizzato per l'autenticazione sarà ovviamente il mio: thece.

Codice: Seleziona tutto

cat /etc/passwd | grep thece

(output atteso)

thece:x:1000:1000:thece,,,:/home/thece:/bin/bash

Codice: Seleziona tutto

cat /etc/group | grep thece

(output atteso)

adm:x:4:syslog,thece
cdrom:x:24:thece
sudo:x:27:thece
dip:x:30:thece
plugdev:x:46:thece
lpadmin:x:122:thece
lxd:x:135:thece
thece:x:1000:
sambashare:x:136:thece

Creo la directory /condivisa da condividere attraverso il server Samba.

Codice: Seleziona tutto

sudo mkdir -p /condivisa
Assegno alla directory /condivisa:
- come utente proprietario l'utente di sistema thece
- come gruppo proprietario il gruppo di sistema thece

Codice: Seleziona tutto

sudo chown thece:thece /condivisa
Assegno alla directory /condivisa gli opportuni diritti di lettura e scrittura (U: 7:rwx , G: 5:r-x , A: 5:r-x)

Codice: Seleziona tutto

sudo chmod 755 /condivisa 
Verifico di aver eseguito correttamente questi passaggi

Codice: Seleziona tutto

ls -dl /condivisa

(output atteso)

drwxr-xr-x 2 thece thece 4096 ago  5 18:06 /condivisa

Installo il pacchetto Samba ...

Codice: Seleziona tutto

sudo apt install samba
... e qualche altro pacchetto opzionale

Codice: Seleziona tutto

sudo apt install cifs-utils smbclient
Mi sposto nella directory /etc/samba

Codice: Seleziona tutto

cd /etc/samba
e inizio a configurare il server.
Come prima cosa rinomino il file di configurazione di Samba /etc/samba/smb.conf installato dal pacchetto, affinchè possa usare un mio file di configurazione personalizzato.

Codice: Seleziona tutto

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original
questo file di backup potrà così essere sempre riutilizzato per tornare alla condizione iniziale (file di configurazione di default installato dal pacchetto).
Creo il nuovo file di configurazione personalizzato

Codice: Seleziona tutto

sudo touch /etc/samba/smb.conf
sudo chmod 644 /etc/samba/smb.conf
Apro il nuovo file di configurazione con un editor di testo in modalità amministratore

Codice: Seleziona tutto

sudo gedit /etc/samba/smb.conf
e all'interno del file che apparirà (vuoto) incollo questo contenuto

Codice: Seleziona tutto

[global]
	netbios name = SRV-SAMBA
	workgroup = WORKGROUP

	server string = %h Samba Server - Version %v

	domain logons = no
	domain master = no
	local master = yes
	preferred master = no
	os level = 3

	server role = auto
	security = user
	server signing = auto
	encrypt passwords = yes
	map to guest = Bad User
	guest account = nobody
	directory mask = 0755
	create mask = 0644
	
	# Protocolli di connessione che dovranno essere supportati dal client
	; client min protocol = NT1
	; client max protocol = SMB3

	# Protocolli di connessione supportati dal server
	; server min protocol = NT1
	; server max protocol = SMB3

	# Permette la connessione dei client che supportano il protocollo di connessione LANMAN (Windows NT / 2000 / 95 / 98)
	; lanman auth = yes

	# Permette la connessione dei client che supportano il protocollo di connessione NTLM (Windows XP)
	; ntlm auth = yes

	dns proxy = yes
	wins support = yes
	name resolve order = lmhosts host wins bcast

	; hosts allow = 127.0.0.1 192.168.0.0/24 10.0.0.0/24

	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000

########## Usershare ##########

	# Le definizioni degli share creati tramite DE (Unity, Gnome, KDE, XFCE, ... ) vengono memorizzate nella directory /var/lib/samba/usershares
	# Per condividere una qualsiasi directory del filesystem
	; usershare owner only = false
	# Per abilitare l'accesso agli share senza autenticazione
	; usershare allow guests = yes

[homes]
	comment = %U - Home Directory
	available = yes
	browseable = no
	writeable = yes
	guest ok = no
	guest only = no
	valid users = %U

[condivisa]
	comment = Condivisa
	path = /condivisa
	available = yes
	browseable = yes
	writeable = yes
	# If this parameter is yes for a service, then no password is required to connect to the service
	guest ok = no
	# If this parameter is yes for a service, then only guest connections to the service are permitted
	# This parameter will have no effect if guest ok is not set for the service
	guest only = no
salvo il file e chiudo l'editor di testo.

Nota: il valore della chiave netbios name è impostato (è meglio impostarlo) uguale al nome del PC, ossia uguale all'output del comando

Codice: Seleziona tutto

hostname

(output atteso)

srv-samba
Per verificare la correttezza sintattica del file di configurazione appena scritto posso usare il comando

Codice: Seleziona tutto

testparm -s
Se volessi visualizzare tutte le chiavi del file di configurazione, comprese quelle non esplicitamente indicate nel file di configurazione stesso, posso usare il comando

Codice: Seleziona tutto

testparm -sv
Riavvio i servizi che regolano il funzionamento del server Samba: nmbd e smbd, per far recepire la nuova configurazione.

Codice: Seleziona tutto

sudo systemctl status nmbd.service
sudo systemctl status smbd.service

Ogni volta che il file di configurazione /etc/samba/smb.conf viene modificato, i servizi che regolano il funzionamento del server Samba devono essere riavviati, altrimenti la nuova configurazione non verrà applicata.


Per verificare che il server si sia avviato correttamente (a livello di servizi) posso usare il comando ss nel seguente modo

Codice: Seleziona tutto

sudo ss -tulnp | egrep 'nmbd|smbd'

(output atteso)

udp   UNCONN 0      0                          192.168.0.255:137        0.0.0.0:*    users:(("nmbd",pid=3803,fd=16))
udp   UNCONN 0      0                          192.168.0.211:137        0.0.0.0:*    users:(("nmbd",pid=3803,fd=15))
udp   UNCONN 0      0                                0.0.0.0:137        0.0.0.0:*    users:(("nmbd",pid=3803,fd=13))
udp   UNCONN 0      0                          192.168.0.255:138        0.0.0.0:*    users:(("nmbd",pid=3803,fd=18))
udp   UNCONN 0      0                          192.168.0.211:138        0.0.0.0:*    users:(("nmbd",pid=3803,fd=17))
udp   UNCONN 0      0                                0.0.0.0:138        0.0.0.0:*    users:(("nmbd",pid=3803,fd=14))
tcp   LISTEN 0      50                               0.0.0.0:445        0.0.0.0:*    users:(("smbd",pid=3813,fd=46))
tcp   LISTEN 0      50                               0.0.0.0:139        0.0.0.0:*    users:(("smbd",pid=3813,fd=47))
tcp   LISTEN 0      50                                  [::]:445           [::]:*    users:(("smbd",pid=3813,fd=44))
tcp   LISTEN 0      50                                  [::]:139           [::]:*    users:(("smbd",pid=3813,fd=45))

Aggiungo l'utente di sistema thece agli utenti di Samba

Codice: Seleziona tutto

sudo smbpasswd -a thece
mi verrà chiesto di inserire una password.
La password dell'utente di Samba non ha nulla a che vedere con la password dell'utente di sistema, potrebbe anche essere diversa.
Per semplicità scelgo di usare la stessa password (secret).

Verifico che l'utente sia stato aggiunto tra gli utenti di Samba

Codice: Seleziona tutto

sudo pdbedit -L

(output atteso)

thece:1000:thece

A questo punto l'installazione e la configurazione del server Samba è terminata.


Per scrupolo, localmente al PC, verifico la connessione al server Samba usando il comando smbclient

Codice: Seleziona tutto

smbclient -L localhost -U="thece"%"secret"

(output atteso)

lpcfg_do_global_parameter: WARNING: The "domain logons" option is deprecated
lpcfg_do_global_parameter: WARNING: The "encrypt passwords" option is deprecated
lpcfg_do_global_parameter: WARNING: The "syslog" option is deprecated

	Sharename       Type      Comment
	---------       ----      -------
	condivisa       Disk      Condivisa
	IPC$            IPC       IPC Service (srv-samba Samba Server - Version 4.15.13-Ubuntu)
	thece           Disk      thece - Home Directory
SMB1 disabled -- no workgroup available

Domanda:
che cosa ho ottenuto con la precedente configurazione del server Samba?
Risposte:
- per ogni utente definito su Samba è stato creato uno share "virtuale", privato per l'utente di Samba, con il quale viene condivisa la relativa Home Directory, sia in lettura che in scrittura (vedi definizione dello share [homes])
- per ogni utente definito su Samba è stato creato uno share condivisa al quale è possibile accedere sia in lettura che in scrittura (vedi definizione dello share [condivisa])

Si noti che la definizione dello share [condivisa] non è legata direttamente all'utente di Samba thece! Tuttavia la directory /condivisa , resa disponibile attraverso la condivisione, è regolamentata da precisi diritti di accesso.
Ultima modifica di thece il sabato 2 settembre 2023, 17:49, modificato 6 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

Accesso alle risorse condivise da PC client con Ubuntu


Mi sposto sul PC con Ubuntu che voglio utilizzare come client per il server Samba, ossia dal quale voglio poter accedere alle risorse condivise dal server Samba.

Domanda:
come faccio per accedere alle risorse condivise dal server Samba?
Risposta:
apro il file manager (Files), visualizzo la barra degli indirizzi con la combinazione di tasti [CTRL]+[L] e digito l'URI

Codice: Seleziona tutto

smb://srv-samba
dove srv-samba è l'hostname del PC sul quale è installato il server Samba.
Mi verrà chiesto di specificare le credenziali con le quali autenticarmi verso il server Samba, ossia quelle definite nel post precedente.

Username: thece
Password: secret


REGOLA GENERALE: quando ci si autentica verso un qualsiasi server remoto, ad esempio: Email, FTP, Samba, SSH, Web Server ... , le credenziali di accesso sono sempre quelle definite sul server remoto.


Tutte le operazioni compiute sui file e sulle directory attraverso lo share verranno elaborate con l'identità e i diritti dell'utente thece, che - ripetiamolo - sul sistema remoto è sia utente di sistema sia utente di Samba.
Quindi le directory e i file verranno creati di proprietà dell'utente thece, gruppo thece, con i permessi 755 per le directory e 644 per i file, come specificato nella sezione [global] del file di configurazione di Samba, chiavi directory mask e create mask.

Nell'URI, in alternativa all'hostname è possibile indicare il relativo indirizzo IP, ad esempio:

Codice: Seleziona tutto

smb://192.168.0.100
Altre varianti per la scrittura dell'URI sono:

Codice: Seleziona tutto

smb://thece@srv-samba

Codice: Seleziona tutto

smb://thece@srv-samba/condivisa

Codice: Seleziona tutto

smb://thece@192.168.0.100

Codice: Seleziona tutto

smb://thece@192.168.0.100/condivisa
Ultima modifica di thece il venerdì 11 agosto 2023, 11:54, modificato 5 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

Accesso alle risorse condivise da PC client con Windows


Mi sposto sul PC con Windows che voglio utilizzare come client per il server Samba, ossia dal quale voglio poter accedere alle risorse condivise dal server Samba.

Domanda:
come faccio per accedere alle risorse condivise dal server Samba?
Risposta:
apro il file manager (Explorer, NON Internet Explorer, che è un browser Web), visualizzo la barra degli indirizzi e digito l'URI

Codice: Seleziona tutto

\\srv-samba
dove srv-samba è l'hostname del PC sul quale è installato il server Samba.
Mi verrà chiesto di specificare le credenziali con le quali autenticarmi verso il server Samba, ossia quelle definite nel post precedente.

Username: thece
Password: secret


REGOLA GENERALE: quando ci si autentica verso un qualsiasi server remoto, ad esempio: Email, FTP, Samba, SSH, Web Server ... , le credenziali di accesso sono sempre quelle definite sul server remoto.

Nota: l'utente thece NON è un utente di sistema di Windows, e anche se lo fosse e avesse la stessa password, sarebbe un utente DIVERSO (omonimo) rispetto a quello definito sul server Samba.
Nel caso in cui l'utente thece sia anche un utente del sistema WIndows e avesse la stessa password, in fase di accesso alla risorsa condivisa non verranno richieste le credenziali di autenticazione.


Tutte le operazioni compiute sui file e sulle directory attraverso lo share verranno elaborate con l'identità e i diritti dell'utente thece, che - ripetiamolo - sul sistema remoto è sia utente di sistema sia utente di Samba.
Quindi le directory e i file verranno creati di proprietà dell'utente thece, gruppo thece, con i permessi 755 per le directory e 644 per i file, come specificato nella sezione [global] del file di configurazione di Samba, chiavi directory mask e create mask.

Nell'URI, in alternativa all'hostname è possibile indicare il relativo indirizzo IP, ad esempio:

Codice: Seleziona tutto

\\192.168.0.100
Altre varianti per la scrittura dell'URI sono:

Codice: Seleziona tutto

\\srv-samba\condivisa

Codice: Seleziona tutto

\\192.168.0.100\condivisa
Ultima modifica di thece il venerdì 11 agosto 2023, 12:08, modificato 9 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

Aggiunta di una nuova condivisione


Come dobbiamo procedere se vogliamo condividere un'altra directory?

Mi sposto sul PC server ... ovviamente!

Creo la directory che voglio condividere (ma potrebbe anche non essere necessario nel caso in cui la directory esista già)

Codice: Seleziona tutto

sudo mkdir -p /altropercorso/condivisa2
Assegno alla directory
- come utente proprietario l'utente di sistema thece
- come gruppo proprietario il gruppo di sistema thece

Codice: Seleziona tutto

sudo chown thece:thece /altropercorso/condivisa2
Assegno alla directory gli opportuni diritti di lettura e scrittura (U: 7:rwx , G: 5:r-x , A: 5:r-x)

Codice: Seleziona tutto

sudo chmod 755 /altropercorso/condivisa2
Verifico di aver eseguito correttamente i passaggi

Codice: Seleziona tutto

ls -ld /altropercorso/condivisa2

(output atteso)

drwxr-xr-x 2 thece thece 4096 ago  5 17:44 /altropercorso/condivisa2/
Modifico il file /etc/samba/smb.conf aggiungendo in coda la definizione del nuovo share

Codice: Seleziona tutto

[condivisa2]
	comment = Condivisa2
	path = /altropercorso/condivisa2
	available = yes
	browseable = yes
	writeable = yes
	guest ok = no
	guest only = no
Riavvio i servizi che regolano il funzionamento del server Samba per far recepire la nuova configurazione.

Codice: Seleziona tutto

sudo systemctl restart nmbd.service
sudo systemctl restart smbd.service
Verifico localmente al PC server la disponibilità del nuovo share

Codice: Seleziona tutto

smbclient -L localhost -U="thece"%"secret"

(output atteso)

lpcfg_do_global_parameter: WARNING: The "domain logons" option is deprecated
lpcfg_do_global_parameter: WARNING: The "encrypt passwords" option is deprecated
lpcfg_do_global_parameter: WARNING: The "syslog" option is deprecated

	Sharename       Type      Comment
	---------       ----      -------
	condivisa       Disk      Condivisa
	condivisa2      Disk      Condivisa2
	IPC$            IPC       IPC Service (srv-samba Samba Server - Version 4.15.13-Ubuntu)
	thece           Disk      thece - Home Directory
SMB1 disabled -- no workgroup available
Ultima modifica di thece il venerdì 11 agosto 2023, 10:31, modificato 7 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

Configurazione del server Samba con accesso alle risorse condivise SENZA AUTENTICAZIONE


Creo la directory /pubblica da condividere attraverso il server Samba.

Codice: Seleziona tutto

sudo mkdir -p /pubblica
Assegno alla directory /pubblica:
- come utente proprietario l'utente di sistema root
- come gruppo proprietario il gruppo di sistema root

Codice: Seleziona tutto

sudo chown root:root /pubblica
Assegno alla directory /pubblica gli opportuni diritti di lettura e scrittura (U: 7:rwx , G: 7:rwx , A: 7:rwx)

Codice: Seleziona tutto

sudo chmod 777 /pubblica 
Verifico di aver eseguito correttamente questi passaggi

Codice: Seleziona tutto

ls -dl /pubblica

(output atteso)

drwxrwxrwx 2 root root 4096 ago 11 09:39 /pubblica
Con un editor di testo in modalità amministratore apro il file di configurazione /etc/samba/smb.conf

Codice: Seleziona tutto

sudo gedit /etc/samba/smb.conf
quindi sostituisco il suo contenuto con il seguente:

Codice: Seleziona tutto

[global]
	netbios name = SRV-SAMBA
	workgroup = WORKGROUP

	server string = %h Samba Server - Version %v

	domain logons = no
	domain master = no
	local master = yes
	preferred master = no
	os level = 3

	server role = auto
	security = user
	server signing = mandatory
	encrypt passwords = yes
	map to guest = Bad User
	guest account = nobody
	directory mask = 0755
	create mask = 0644
	
	# Protocolli di connessione che dovranno essere supportati dal client
	; client min protocol = NT1
	; client max protocol = SMB3
	# Protocolli di connessione supportati dal server
	; server min protocol = NT1
	server min protocol = SMB2
	server max protocol = SMB3

	# Permette la connessione dei client che supportano il protocollo di connessione LANMAN (Windows NT / 2000 / 95 / 98)
	; lanman auth = yes
	# Permette la connessione dei client che supportano il protocollo di connessione NTLM (Windows XP)
	; ntlm auth = yes

	dns proxy = yes
	wins support = yes
	name resolve order = lmhosts host wins bcast

	; hosts allow = 127.0.0.1 192.168.0.0/24 10.0.0.0/24

	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000

########## Usershare ##########

	# Le definizioni degli share creati tramite DE (Unity, Gnome, KDE, XFCE, ... ) vengono memorizzate nella directory /var/lib/samba/usershares
	# Per condividere una qualsiasi directory del filesystem
	; usershare owner only = false
	# Per abilitare l'accesso agli share senza autenticazione
	; usershare allow guests = yes

[pubblica]
	comment = Pubblica
	path = /pubblica
	available = yes
	browseable = yes
	writeable = yes
	# If this parameter is yes for a service, then no password is required to connect to the service
	guest ok = yes
	# If this parameter is yes for a service, then only guest connections to the service are permitted
	# This parameter will have no effect if guest ok is not set for the service
	guest only = yes
	directory mask = 0777
	create mask = 0666
salvo il file e chiudo l'editor di testo.

Nota: a meno della definizione degli share [homes] e [condivisa], il contenuto di questo file di configurazione è identico a quello del primo post.

Riavvio i servizi che regolano il funzionamento del server Samba per far recepire la nuova configurazione.

Codice: Seleziona tutto

sudo systemctl restart nmbd.service
sudo systemctl restart smbd.service
Verifico localmente al PC server la disponibilità dello share

Codice: Seleziona tutto

smbclient -N -L localhost

(output atteso)

lpcfg_do_global_parameter: WARNING: The "domain logons" option is deprecated
lpcfg_do_global_parameter: WARNING: The "encrypt passwords" option is deprecated
lpcfg_do_global_parameter: WARNING: The "syslog" option is deprecated
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
	pubblica        Disk      Pubblica
	IPC$            IPC       IPC Service (srv-samba Samba Server - Version 4.15.13-Ubuntu)
SMB1 disabled -- no workgroup available

Accedendo allo share pubblica senza autenticazione, l'utente "anonimo" verrà automaticamente mappato dal PC server srv-samba come utente nobody, gruppo nogroup.
Tutte le directory e i file creati dal file manager remoto saranno resi di proprietà dell'utente nobody, gruppo nogroup, con i permessi 777 per le directory e 666 per i file, come specificato nella sezione [pubblica] del file di configurazione del server Samba, chiavi directory mask e create mask.

Se la directory /pubblica non avesse i permessi U: 7:rwx , G: 7:rwx , A: 7:rwx

Codice: Seleziona tutto

drwxrwxrwx   2 root root  4096 set 11 18:12 pubblica
oppure la proprietà nobody:nogroup

Codice: Seleziona tutto

drwxr-xr-x   2 nobody nogroup  4096 set 11 18:12 pubblica
l'utente "anonimo" non riuscirebbe a scrivere dentro la directory, nonostante la definizione dello share [pubblica] sia corretta.


Windows 10 / 11

Per questioni di sicurezza, le ultime versioni di Windows non "digeriscono bene" il fatto di poter accedere a risorse condivise senza autenticazione.
Per sfruttare comunque questa possibilità modificare la seguente policy di sicurezza

Codice: Seleziona tutto

secpol.msc (Local Security Policy) > Security Settings > Local Policies > Security Options > Microsoft network client: Digitally sign communications (always) : Disabled
In Rete viene suggerita anche questa soluzione

Codice: Seleziona tutto

gpedit.msc (Edit Group Policy) > Computer Configuration > Administrative Templates > Network > Lanman Workstation > Enable insecure guest logon: Enabled
ma nelle mie prove non ha mai funzionato, probabilmente dipende dal livello di patching di Windows. Provatele entrambe.
Ultima modifica di thece il venerdì 11 agosto 2023, 12:13, modificato 2 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

Identificazione di problemi di connessione tra PC client Ubuntu e PC server Samba


Purtroppo le cose non vanno sempre bene.
Dal PC client Ubuntu (o dal PC client Windows) potremmo non riuscire a connetterci alle risorse condivise.
Vediamo come identificare (non risolvere!) alcuni macro problemi di connessione che potrebbero occorrere tra PC client Ubuntu e PC server Samba.

Per risolvere il problema occorre prima identificarlo, poi capire come e dove intervenire: cosa tutt'altro che semplice!

Come prima cosa proviamo a pingare il PC server Samba attraverso il suo hostname (srv-samba)

Codice: Seleziona tutto

ping -c 4 srv-samba

(output atteso)

PING srv-samba (192.168.0.100) 56(84) bytes of data.
64 bytes from srv-samba (192.168.0.100): icmp_seq=1 ttl=64 time=0.302 ms
64 bytes from srv-samba (192.168.0.100): icmp_seq=2 ttl=64 time=0.405 ms
64 bytes from srv-samba (192.168.0.100): icmp_seq=3 ttl=64 time=0.508 ms
64 bytes from srv-samba (192.168.0.100): icmp_seq=4 ttl=64 time=0.525 ms

--- srv-samba ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.302/0.435/0.525/0.089 ms
In questo caso l'output positivo ci sta dicendo due cose:
- il PC server Samba è raggiungibile dal PC client Ubuntu, ossia potenzialmente i due PC sono in grado di comunicare
- il PC client Ubuntu è in grado di risolvere, tramite il server DNS, l'hostname del PC server Samba con il suo indirizzo IP relativo. In questo caso a srv-samba corrisponde 192.168.0.100.

Quest'ultimo fatto poteva essere verificato anche con il comando nslookup

Codice: Seleziona tutto

nslookup srv-samba

(output atteso)

Server:		192.168.0.1
Address:	192.168.0.1#53

Name:	srv-samba
Address: 192.168.0.100
Nel caso in cui la risoluzione DNS dell'hostname non fosse possibile, il PC server Samba potrebbe essere ancora raggiungibile dal PC client Ubuntu utilizzando esclusivamente il suo indirizzo IP.
In tal caso provare con:

Codice: Seleziona tutto

ping -c 4 192.168.0.100

(output atteso)

PING 192.168.0.100 (192.168.0.100) 56(84) bytes of data.
64 bytes from 192.168.0.100: icmp_seq=1 ttl=64 time=0.439 ms
64 bytes from 192.168.0.100: icmp_seq=2 ttl=64 time=0.491 ms
64 bytes from 192.168.0.100: icmp_seq=3 ttl=64 time=0.567 ms
64 bytes from 192.168.0.100: icmp_seq=4 ttl=64 time=0.536 ms

--- 192.168.0.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.439/0.508/0.567/0.048 ms

E se in entrambi i casi il comando ping restituisce esito negativo? Il PC client Ubuntu è ancora in grado di comunicare con il server Samba? Si, potrebbe essere ancora in grado di farlo. Tutto dipende da come sono configurati eventuali firewall interposti fra il PC client Ubuntu e il PC server Samba.

Il comando dal quale dobbiamo partire è

Codice: Seleziona tutto

smbclient -L 192.168.0.100 -U="thece"%"secret"
nel quale per comodità utilizziamo l'indirizzo IP del PC server invece del suo hostname (srv-samba) in modo da aggirare temporanemente eventuali problemi di risoluzione DNS.

Supponiamo che l'esito sia negativo. Dividiamo grossolanamente gli esiti negativi in due macro categorie:
- il comando smbclient termina mostrando un messaggio di errore di autenticazione, di protocollo o simili
- il comando smbclient rimane "appeso" o termina per timeout senza mostrare alcun messaggio di errore o termina mostrando un messaggio di errore di connessione.

La prima macro categoria con buona probabilità è legata solo a problemi di configurazione del server Samba, e la soluzione va ricercata nel file di configurazione /etc/samba/smb.conf

La seconda macro categoria invece potrebbe essere legata:
- a problemi di rete. I servizi nmbd e smbd sono attivi sul PC server Samba, ma PC client Ubuntu e PC server Samba non riescono a comunicare.
- a problemi di configurazione del server Samba. I servizi nmbd e smbd non sono attivi sul PC server Samba, e ovviamente PC client Ubuntu e PC server Samba non riescono a comunicare.

La prima cosa da fare è spostarsi sul PC server Samba è verificare se i servizi nmbd e smbd sono attivi.

Codice: Seleziona tutto

sudo ss -tulnp | egrep 'nmbd|smbd'

(output atteso)

udp   UNCONN 0      0                          192.168.0.255:137        0.0.0.0:*    users:(("nmbd",pid=704,fd=18))
udp   UNCONN 0      0                          192.168.0.211:137        0.0.0.0:*    users:(("nmbd",pid=704,fd=17))
udp   UNCONN 0      0                                0.0.0.0:137        0.0.0.0:*    users:(("nmbd",pid=704,fd=15))
udp   UNCONN 0      0                          192.168.0.255:138        0.0.0.0:*    users:(("nmbd",pid=704,fd=20))
udp   UNCONN 0      0                          192.168.0.211:138        0.0.0.0:*    users:(("nmbd",pid=704,fd=19))
udp   UNCONN 0      0                                0.0.0.0:138        0.0.0.0:*    users:(("nmbd",pid=704,fd=16))
tcp   LISTEN 0      50                               0.0.0.0:445        0.0.0.0:*    users:(("smbd",pid=755,fd=46))
tcp   LISTEN 0      50                               0.0.0.0:139        0.0.0.0:*    users:(("smbd",pid=755,fd=47))
tcp   LISTEN 0      50                                  [::]:445           [::]:*    users:(("smbd",pid=755,fd=44))
tcp   LISTEN 0      50                                  [::]:139           [::]:*    users:(("smbd",pid=755,fd=45))
e nell'output sopra lo sono.

La seconda cosa da fare è spostarsi sul PC client Ubuntu e verificare se i servizi nmbd e smbd sono contattabili attraverso le loro porte di ascolto.
Per il servizio nmbd: 137/UDP e 138/UDP
Per il servizio smbd: 139/TCP e 445/TCP
Per questa verifica utilizzeremo il comando nc (netcat)

Codice: Seleziona tutto

nc -v -u srv-samba 137

(output atteso)

srv-samba [192.168.0.211] 137 (netbios-ns) open

Codice: Seleziona tutto

nc -v -u srv-samba 138

(output atteso)

srv-samba [192.168.0.211] 138 (netbios-dgm) open

Codice: Seleziona tutto

nc -v srv-samba 139

(output atteso)

srv-samba [192.168.0.211] 139 (netbios-ssn) open

Codice: Seleziona tutto

nc -v srv-samba 445

(output atteso)

srv-samba [192.168.0.211] 445 (microsoft-ds) open
per terminare il comando netcat usare la combinazione di tasti [CTRL] + [C]

Se uno qualsiasi dei precedenti test dovesse fallire allora si dovrà andare ad investigare sulle impostazioni del firewall del PC client Ubuntu, del PC server Samba e (se possibile) di qualsiasi altro dispositivo frapposto fra di essi, per il quale transita la connessione verso il PC server Samba.


Su Ubuntu 22.04 il comando netcat è installato di default. Su Windows occorre scaricarlo (ad esempio da QUI) e installarlo.


(*) Ricordo che Samba di Linux è l'applicazione equivalente di "Condivisione file e stampanti" di Windows. Queste applicazioni usano lo stesso protocollo (CIFS / SMB) e ovviamente le stesse porte 139, 445 (TCP) e 137, 138 (UDP) di comunicazione.



***** CONTINUA ... FORSE ... *****
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

Proposta di implementazione di soluzione per lettori e scrittori SENZA ACL (Access Control List)

I lettori (smbReaders) potranno solamente leggere all'interno dello share.
Gli scrittori (smbWriters) potranno leggere e scrivere all'interno dello share.



Creazione dei gruppi di sistema

Codice: Seleziona tutto

sudo groupadd smbReaders
sudo groupadd smbWriters
Creazione degli utenti di sistema

Codice: Seleziona tutto

sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbReaders smbReader01
sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbReaders smbReader02

sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbWriters smbWriter01
sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbWriters smbWriter02
Nota: gli utenti smbReader## e smbWriter## :
- non hanno Home Directory
- non possono effettuare il login sul sistema
- hanno come gruppo primario smbReaders e smbWriters rispettivamente.

Controlli vari

Codice: Seleziona tutto

cat /etc/group | grep -i smb
cat /etc/passwd | grep -i smb

id smbReader01
id smbReader02

id smbWriter01
id smbWriter02
Creazione della directory che verrà condivisa

Codice: Seleziona tutto

sudo mkdir -p /smbShare
sudo chown smbWriter01:smbWriters /smbShare
sudo chmod 775 /smbShare
Controlli vari

Codice: Seleziona tutto

ls -ld /smbShare
Creazione degli utenti di Samba

Codice: Seleziona tutto

sudo smbpasswd -a smbReader01
sudo smbpasswd -a smbReader02

sudo smbpasswd -a smbWriter01
sudo smbpasswd -a smbWriter02
Controlli vari

Codice: Seleziona tutto

sudo pdbedit -L
Definizione dello share di Samba

Codice: Seleziona tutto

[smbShare]
	comment = SMB Share
	path = /smbShare
	available = yes
	browseable = yes
	writeable = yes
	guest ok = no
	guest only = no
	directory mask = 0775
	create mask = 0664	
	valid users = @smbReaders, @smbWriters
Ultima modifica di thece il martedì 5 settembre 2023, 22:38, modificato 1 volta in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 13127
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] Samba - Instal. & Conf.

Messaggio da thece »

Proposta di implementazione di soluzione per lettori e scrittori CON ACL (Access Control List)

I lettori (smbReaders) potranno solamente leggere all'interno dello share.
Gli scrittori (smbWriters) potranno leggere e scrivere all'interno dello share.



Creazione dei gruppi di sistema

Codice: Seleziona tutto

sudo groupadd smbReaders
sudo groupadd smbWriters
Creazione degli utenti di sistema

Codice: Seleziona tutto

sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbReaders smbReader01
sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbReaders smbReader02

sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbWriters smbWriter01
sudo useradd --home-dir /bin/false --shell /usr/sbin/nologin --no-user-group --gid smbWriters smbWriter02
Nota: gli utenti smbReader## e smbWriter## :
- non hanno Home Directory
- non possono effettuare il login sul sistema
- hanno come gruppo primario smbReaders e smbWriters rispettivamente.

Controlli vari

Codice: Seleziona tutto

cat /etc/group | grep -i smb
cat /etc/passwd | grep -i smb

id smbReader01
id smbReader02

id smbWriter01
id smbWriter02
Creazione della directory che verrà condivisa

Codice: Seleziona tutto

sudo mkdir -p /smbShare
sudo chown root:root /smbShare
sudo chmod 770 /smbShare
Controlli vari

Codice: Seleziona tutto

ls -ld /smbShare
getfacl /smbShare
Aggiunta delle ACL alla directory /smbShare

Codice: Seleziona tutto

sudo setfacl -m g:smbReaders:rx /smbShare

sudo setfacl -m g:smbWriters:rwx /smbShare
Controlli vari

Codice: Seleziona tutto

ls -ld /smbShare
getfacl /smbShare
Creazione degli utenti di Samba

Codice: Seleziona tutto

sudo smbpasswd -a smbReader01
sudo smbpasswd -a smbReader02

sudo smbpasswd -a smbWriter01
sudo smbpasswd -a smbWriter02
Controlli vari

Codice: Seleziona tutto

sudo pdbedit -L
Definizione dello share di Samba

Codice: Seleziona tutto

[smbShare]
        comment = SMB Share
        path = /smbShare
        available = yes
        browseable = yes
        writeable = yes
        guest ok = no
        guest only = no
        directory mask = 0750
        create mask = 0640      
        inherit owner = yes
        inherit acls = yes
        inherit permissions = yes
        valid users = @smbReaders, @smbWriters
Scrivi risposta

Ritorna a “Connessione e configurazione delle reti”

Chi c’è in linea

Visualizzano questa sezione: Martin0 e 3 ospiti