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

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Condivido i miei appunti per l'installazione del servizio Samba. Spero possa essere di aiuto


Appunti testati su Ubuntu 16.04.

NOTA: oramai questi appunti sono OBSOLETI. Per le versioni attuali di Ubuntu e di Windows, sono da considerarsi come poco più di una traccia


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 servizio Samba: questo è solo un modo! Vengono fatte assunzioni forti, viene calcata la mano all'utente "inesperto". Altre scelte potrebbero essere fatte sulla base delle proprie necessità.
Per qualsiasi: correzione, osservazione, suggerimento o altro, inerente questa discussione, cortesemente, mandatemi un messaggio in privato.



Happy Linux :ciao:


Domanda: quando devo installare il servizio Samba?
Risposta: il servizio Samba deve essere installato quando in una LAN mista, ossia con PC sia Linux sia Windows, dal mio PC voglio condividere file, directory e stampanti (IMHO anche se per quest'ultime è meglio usare il servizio CUPS(*)). Se dal mio PC non voglio condividere nulla di tutto ciò, ma semplicemente accedere, leggere e modificare file, directory e stampanti condivise da un altro PC allora non devo installare il servizio Samba.

(*) [HOWTO] CUPS condivisione stampante


Di seguito verrà trattata la configurazione del servizio Samba utilizzando il metodo "tradizionale" ossia editando il solo file di configurazione /etc/samba/smb.conf.
La configurazione riguarderà l'utilizzo delle risorse condivise MEDIANTE AUTENTICAZIONE al servizio stesso.
La configurazione per l'utilizzo delle risorse SENZA AUTENTICAZIONE è trattata al post N° 7.
La lettura di tutti i post è comunque consigliata per la comprensione dell'intera procedura.



Creo una directory /temp da condividere con il servizio Samba.

Codice: Seleziona tutto

sudo mkdir /temp
Modifico i permessi della directory /temp in modo che ogni utente del PC possa sia leggerne, sia modificarne il contenuto

Codice: Seleziona tutto

sudo chmod 777 /temp
Verifico di aver eseguito il passaggio correttamente

Codice: Seleziona tutto

ls -dl /temp

(output atteso)

drwxrwxrwx   2 root root  4096 set 11 18:12 /temp
Installo il pacchetto Samba ...

Codice: Seleziona tutto

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

Codice: Seleziona tutto

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

Codice: Seleziona tutto

cd /etc/samba
e inizio a configurare il servizio.

Come prima cosa rinomino il file di configurazione del servizio 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.ORIGINALE
questo file di backup può così essere sempre riutilizzato per tornare alla condizione di partenza (file di configurazione di default installato dal pacchetto).


Creo il nuovo file di configurazione

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 (vuoto) che apparirà 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
	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 = CORE
	; client max protocol = default
	# 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

	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

[temp]
	comment = Temp
	path = /temp
	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 srv-samba, ossia uguale all'output del comando

Codice: Seleziona tutto

hostname
Se voglio verificare la correttezza del file di configurazione appena scritto posso usare ad esempio il comando

Codice: Seleziona tutto

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

Codice: Seleziona tutto

testparm -sv
Riavvio il servizio per far recepire a Samba la nuova configurazione.

Codice: Seleziona tutto

sudo /etc/init.d/samba restart
Ogni volta che il file di configurazione /etc/samba/smb.conf viene modificato, il servizio deve essere riavviato per far recepire a Samba la nuova configurazione.


Per verificare che il servizio si sia avviato correttamente (a livello di processi) posso usare il comando netstat nel seguente modo

Codice: Seleziona tutto

sudo netstat -tulnp | egrep 'nmbd|smbd'

(output atteso)

tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      21847/smbd
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      21847/smbd
tcp6       0      0 :::139                  :::*                    LISTEN      21847/smbd
tcp6       0      0 :::445                  :::*                    LISTEN      21847/smbd
udp        0      0 192.168.0.255:137       0.0.0.0:*                           21784/nmbd
udp        0      0 192.168.0.201:137       0.0.0.0:*                           21784/nmbd
udp        0      0 0.0.0.0:137             0.0.0.0:*                           21784/nmbd
udp        0      0 192.168.0.255:138       0.0.0.0:*                           21784/nmbd
udp        0      0 192.168.0.201:138       0.0.0.0:*                           21784/nmbd
udp        0      0 0.0.0.0:138             0.0.0.0:*                           21784/nmbd
Aggiungo a Samba l'utente che verrà utilizzato per l'autenticazione verso le sue condivisioni. L'utente di Samba deve essere obbligatoriamente anche un utente del sistema.
Ovviamente, per questa guida userò il mio utente thece.

Codice: Seleziona tutto

cat /etc/passwd | grep thece

(output atteso)

thece:x:1000:1000:thece,,,:/home/thece:/bin/bash
Aggiungo l'utente a Samba

Codice: Seleziona tutto

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

Verifico che l'utente thece 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 servizio Samba è terminata.


Per scrupolo, localmente al PC SERVER, verifico la connessione al servizio Samba usando il comando

Codice: Seleziona tutto

smbclient -L localhost -U="thece"%"SECRET"
dove thece e SECRET sono le credenziali scelte per l'autenticazione al servizio Samba.


Domanda: che cosa ho ottenuto con la precedente configurazione del servizio Samba?
Risposte:

- per ogni utente definito su Samba (e quindi sul sistema) è stato creato uno share "virtuale", privato per l'utente, con il quale viene condivisa la relativa Home Directory, sia in lettura che in scrittura (definizione dello share [homes])

- per ogni utente definito su Samba (e quindi sul sistema) è stato creato uno share temp, comune ad ogni utente, al quale è possibile accedere sia in lettura che in scrittura (definizione dello share [temp])
Ultima modifica di thece il martedì 14 febbraio 2023, 15:22, modificato 36 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

A questo punto mi sposto su un altro PC Linux, che voglio utilizzare come CLIENT per il servizio Samba, ossia dal quale voglio poter utilizzare le condivisioni pubblicate dal servizio Samba.


Come prima cosa apro il terminale e verifico che il PC SERVER Samba sia raggiungibile dal PC CLIENT. Per far questo utilizzo ad esempio il comando

Codice: Seleziona tutto

ping -c 4 srv-samba

(output atteso)

PING srv-samba (192.168.0.201) 56(84) bytes of data.
64 bytes from 192.168.0.201: icmp_seq=1 ttl=64 time=0.146 ms
64 bytes from 192.168.0.201: icmp_seq=2 ttl=64 time=0.284 ms
64 bytes from 192.168.0.201: icmp_seq=3 ttl=64 time=0.263 ms
64 bytes from 192.168.0.201: icmp_seq=4 ttl=64 time=0.260 ms
In realtà, con l'esito positivo di questo comando, ho ottenuto due risultati:

- il PC SERVER Samba è raggiungibile dal PC CLIENT

- il PC CLIENT risolve correttamente il nome del PC SERVER Samba, ossia riesce a risalire correttamente all'indirizzo IP del PC SERVER Samba (es: 192.168.0.201) conoscendone il nome (srv-samba).

Se il precedente comando avesse avuto esito negativo, avrei dovuto riprovare con il seguente comando

Codice: Seleziona tutto

ping -c 4 INDIRIZZO_IP_SRV_SAMBA
(qui non ho sostituito a INDIRIZZO_IP_SRV_SAMBA il valore 192.168.0.201 perchè ... è più importante capire cosa ci va scritto dal punto di vista logico)

Se il risultato ha esito positivo allora il PC SERVER Samba è raggiungibile dal PC CLIENT.
Se il risultato ha esito negativo allora sulla LAN "si potrebbe avere" un qualche genere di problema di networking. "Si potrebbe avere" ... non è detto! Qui il discorso si fa lungo: la risoluzione dei problemi di networking non è lo scopo di questi semplici appunti, quindi facciamo finta che l'esito del risultato del comando sia positivo.


Il punto importante da tenere presente è: se nei successivi test, comandi, etc ... etc ... il nome srv-samba non viene risolto allora sostituitelo con il relativo indirizzo IP INDIRIZZO_IP_SRV_SAMBA.
D'ora in avanti, per maggiore chiarezza espositiva, userò (quasi) sempre INDIRIZZO_IP_SRV_SAMBA.


Bene, il PC SERVER Samba è raggiungibile dal PC CLIENT (ricordiamolo: Linux). Verifico quindi la connessione remota al servizio Samba. Se non già presente sul PC CLIENT, installo il tool smbclient

Codice: Seleziona tutto

sudo apt-get install smbclient
quindi dò il comando

Codice: Seleziona tutto

smbclient -L INDIRIZZO_IP_SRV_SAMBA -U="thece"%"SECRET"
dove thece è l'utente che ho scelto per autenticarmi al servizio Samba e SECRET è la relativa password.


Nota: sul PC CLIENT, le credenziali (utente e password) da fornire per l'autenticazione sul servizio Samba sono sempre quelle definite sul PC SERVER.
La regola generale dice: in una connessione autenticata ad una qualsiasi risorsa, le credenziali da fornire sono sempre quelle di un utente definito sul server (della risorsa), mai sul client.


Se il comando ha esito positivo otterrò un output del genere

Codice: Seleziona tutto

Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.9-Ubuntu]

        Sharename       Type      Comment
        ---------       ----      -------
        temp            Disk      Temp
        IPC$            IPC       IPC Service (srv-samba Samba Server - Version 4.3.9-Ubuntu)
        thece           Disk      Home Directory
in cui verranno elencati gli share pubblicati dal servizio Samba.

Una piccola osservazione: lo share thece è "virtuale", privato per l'utente thece, non è realmente presente all'interno del file di configurazione di Samba. E' lo share costruito da Samba attraverso la sezione speciale [homes] per condividere la Home Directory dell'utente (di Samba, del PC srv-samba) thece.
Se nel comando smbclient avessi usato l'utente pippo (supponiamo anch'esso definito su Samba e sul PC srv-samba)

Codice: Seleziona tutto

smbclient -L INDIRIZZO_IP_SRV_SAMBA -U="pippo"%"SECRET"
non avrei visto lo share "virtuale" thece, bensì avrei visto lo share "virtuale" pippo.


A questo punto provo a collegarmi agli share utilizzando un file manager grafico. Il file manager solitamente utilizza plugin esterni per accedere agli share del servizio Samba.
Io uso come Desktop Environment KDE e come file manager Konqueror che ha un suo plugin integrato, per gli altri Desktop Environment e file manager i passaggi dovrebbero essere simili.


Su *buntu con Unity / Gnome / XFCE / LXDE / Mate / Cinnamon (e altri?) occorre verificare che i pacchetti relativi a GVFS siano installati

Codice: Seleziona tutto

dpkg -l | grep gvfs
e, nel caso in cui non lo siano, installarli con il comando

Codice: Seleziona tutto

sudo apt-get install gvfs gvfs-backends gvfs-bin gvfs-common gvfs-daemons gvfs-fuse gvfs-libs

Avvio Konqueror e nella sua barra degli indirizzi vado a scrivere

Codice: Seleziona tutto

smb://INDIRIZZO_IP_SRV_SAMBA
dopo qualche secondo otterrò la lista degli share (screenshot_01). Nella lista apparirà solamente lo share temp perchè la connessione è stata fatta senza autenticazione. Se nella barra degli indirizzi avessi scritto

Codice: Seleziona tutto

smb://thece@INDIRIZZO_IP_SRV_SAMBA
dopo la consueta richiesta di password (screenshot_02) avrei ottenuto la lista (screenshot_03)


La lista degli share pubblicati dal servizio Samba riesco a vederla senza autenticazione. L'accesso agli share no! Per poter accedere agli share devo autenticarmi.


Accedendo agli share tutte le directory e i file creati dal file manager remoto, nel mio caso Konqueror, verranno creati di proprietà dell'utente (di Samba, di srv-samba) thece, con i permessi 755 per le directory e 644 per i file, come specificato nella sezione [global] del file di configurazione del servizio Samba, chiavi directory mask e create mask
Allegati
screenshot_01.png
screenshot_02.png
screenshot_03.png
Ultima modifica di thece il giovedì 22 novembre 2018, 15:43, modificato 15 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Piccola nota per l'identificazione di eventuali problemi di rete tra PC CLIENT e PC SERVER Samba


Affinchè un qualsiasi PC CLIENT (Linux, Windows) possa connettersi agli share pubblicati da un qualsiasi PC SERVER Samba (Linux, Windows (*)) posto sulla stessa LAN oppure su Internet, indipendentemente da qualsiasi firewall frapposto fra di essi, il PC CLIENT deve aver accesso alle porte 139, 445 (TCP) e 137, 138 (UDP) del PC SERVER Samba.

Per verificare queste condizioni, su un PC Linux o Windows è possibile utilizzare ad esempio il comando nc (netcat) nel seguente modo:

Codice: Seleziona tutto

nc -v srv-samba 139

(output atteso)

Connection to srv-samba 139 port [tcp/netbios-ssn] succeeded!

Codice: Seleziona tutto

nc -v srv-samba 445

(output atteso)

Connection to srv-samba 445 port [tcp/microsoft-ds] succeeded!

Codice: Seleziona tutto

nc -v -u srv-samba 137

(output atteso)

Connection to srv-samba 137 port [udp/netbios-ns] succeeded!

Codice: Seleziona tutto

nc -v -u srv-samba 138

(output atteso)

Connection to srv-samba 138 port [udp/netbios-dgm] succeeded!
per terminare la connessione del 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, del PC SERVER Samba e (se possibile) di qualsiasi altro PC frapposto fra di essi, per il quale transita la connessione verso il PC SERVER Samba.


Su Ubuntu 16.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 le stesse porte 139, 445 (TCP) e 137, 138 (UDP) di comunicazione.
Ultima modifica di thece il venerdì 11 novembre 2016, 12:08, modificato 6 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Supponiamo adesso che sul mio PC CLIENT Linux io voglia montare localmente uno share pubblicato sul PC SERVER Samba, come posso fare?


Intanto, se non già presente sul PC CLIENT, installo il pacchetto

Codice: Seleziona tutto

sudo apt-get install cifs-utils
Scelgo localmente al PC CLIENT una directory già esistente (e possibilmente vuota) sulla quale effettuare il montaggio, ad esempio la directory /mnt/share_remoto.
Apro il teminale e do il comando

Codice: Seleziona tutto

sudo mount -t cifs -o username="thece",password="SECRET",uid=LOCAL_USER,gid=LOCAL_GROUP "//srv-samba/temp" "/mnt/share_remoto"
dove thece e SECRET sono le credenziali usate per autenticarsi sul server Samba. LOCAL_USER e LOCAL_GROUP sono il nome di un utente e gruppo locale al PC CLIENT a cui assegnare la proprietà del punto di montaggio (/mnt/share_remoto). Se all'interno del comando mount i parametri uid e gui non vengono specificati la proprietà del punto di montaggio verrà assegnata all'utente root, gruppo root.

Per smontare lo share (operazione inversa) uso il comando

Codice: Seleziona tutto

sudo umount /mnt/share_remoto

Il montaggio di cui sopra è "manuale" e non persistente, ossia ad ogni avvio del PC devo ripeterlo. E' possibile rendere il montaggio "automatico" modificando il file di configurazione /etc/fstab e introducendo la seguente direttiva equivalente

Codice: Seleziona tutto

//srv-samba/temp   /mnt/share_remoto   cifs   auto,username=thece,password=SECRET,uid=LOCAL_USER,gid=LOCAL_GROUP   0   0
oppure

Codice: Seleziona tutto

//srv-samba/temp   /mnt/share_remoto   cifs   auto,credentials=/etc/samba/smbcredentials,uid=LOCAL_USER,gid=LOCAL_GROUP   0   0
dove il file di testo /etc/samba/smbcredentials ha il seguente formato

Codice: Seleziona tutto

username=thece
password=SECRET
La seconda variante della direttiva di montaggio viene utilizzata per proteggere da occhi indiscreti le credenziali di accesso. Per raggiungere questo obiettivo devo modificare la proprietà e i permessi del file /etc/samba/smbcredentials nel seguente modo

Codice: Seleziona tutto

sudo chown root:root /etc/samba/smbcredentials
sudo chmod 600  /etc/samba/smbcredentials
Ultima modifica di thece il martedì 13 settembre 2016, 16:08, modificato 3 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

E se volessi utilizzare un PC Windows come CLIENT per il mio servizio Samba? Niente di più semplice, mi sposto sul PC CLIENT Windows, apro il file manager (Explorer) e nella barra degli indirizzi vado a scrivere

Codice: Seleziona tutto

\\srv-samba
oppure

Codice: Seleziona tutto

\\INDIRIZZO_IP_SRV_SAMBA
Le credenziali di accesso che mi verranno richieste sono i consueti thece e SECRET, già ampiamente discussi.
Ultima modifica di thece il venerdì 16 settembre 2016, 17:38, modificato 4 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Installazione di winbind


Vediamo come migliorare la risoluzione dei nomi dei PC presenti sulla nostra LAN.


Nota: io non sono un sistemista: nè di Linux, nè di Windows.
Questa procedura io la faccio a prescindere su tutti i PC Linux della mia LAN. Non saprei dire se sia sufficiente eseguirla solamente sui PC Linux con installato il servizio Samba.
Se qualche sistemista avesse voglia di contattarmi in privato per darmi delucidazioni in merito, è il benvenuto.



Installo i pacchetti

Codice: Seleziona tutto

sudo apt-get install winbind libnss-winbind libpam-winbind
Una volta terminata l'installazione, con un editor di testo in modalità amministratore apro il file /etc/nsswitch.conf e modifico la seguente riga:


hosts: files mdns4_minimal [NOTFOUND=return] wins dns


in grassetto ho evidenziato il valore da aggiungere (wins) rispetto al file originale.
Una volta effettuata la modifica, salvo il file e riavvio il PC.
Ultima modifica di thece il sabato 7 ottobre 2017, 1:35, modificato 3 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Configurazione del servizio Samba per risorse condivise utilizzabili SENZA AUTENTICAZIONE


Mi sposto sul PC SERVER srv-samba, con un editor di testo in modalità amministratore apro il file di configurazione /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
	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 = CORE
	; client max protocol = default
	# 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

	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

[temp]
	comment = Temp
	path = /temp
	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
una volta effettuata la modifica, salvo il file e riavvio il servizio con il comando

Codice: Seleziona tutto

sudo /etc/init.d/samba restart
per far recepire a Samba la nuova configurazione.


Accedendo allo share temp 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 [temp] del file di configurazione del servizio Samba, chiavi directory mask e create mask.

Se la directory /temp, creata in precedenza, non avesse i permessi rwxrwxrwx (777)

Codice: Seleziona tutto

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

Codice: Seleziona tutto

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


Eventuali utenti di Samba configurati in precedenza (es: thece) possono essere visualizzati usando il comando

Codice: Seleziona tutto

sudo pdbedit -L
e cancellati (da Samba, non dal sistema) usando il comando

Codice: Seleziona tutto

sudo smbpasswd -x thece


Windows 10

Per accedere agli share non autenticati 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 10. Provatele entrambe.
Ultima modifica di thece il venerdì 19 marzo 2021, 9:22, modificato 9 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Pillole di usershare

Con riferimento ai file di configurazione per Samba riportati nei post N° 1 e N° 7, è possibile usare il comando net usershare per definire in modo alternativo le sole directory condivise, senza andare a modificare il file di configurazione (/etc/samba/smb.conf) e riavviare i relativi servizi.


net usershare è il comando su cui si basa la gestione delle directory condivise mediante File Manager (GUI).


Requisito:

l'utente deve appartenere al gruppo sambashare. E' possibile verificarlo utilizzando il comando

Codice: Seleziona tutto

id
E' possibile aggiungersi al gruppo sambashare utilizzando il comando

Codice: Seleziona tutto

sudo -aG sambashare $USER

Lista degli share definiti

Codice: Seleziona tutto

net usershare list
Dettagli sulla definizione dello share

Codice: Seleziona tutto

net usershare info "SHARENAME"
Aggiunta e modifica di un nuovo share

Sintassi generale:

Codice: Seleziona tutto

net usershare add "SHARENAME" "PATH" ["COMMENT" ["ACL"] [guest_ok=[y|n]]]
Esempi:

Codice: Seleziona tutto

net usershare add "SHARENAME" "/SOMEWHERE/IN/MY/SYSTEM" "COMMENT" "Everyone:F" guest_ok=y

Codice: Seleziona tutto

net usershare add "SHARENAME" "/SOMEWHERE/IN/MY/SYSTEM" "COMMENT" "Everyone:R,DOMAIN\USER_01:F" guest_ok=n

Codice: Seleziona tutto

net usershare add "SHARENAME" "/SOMEWHERE/IN/MY/SYSTEM" "COMMENT" "Everyone:R,DOMAIN\USER_01:F,DOMAIN\USER_02:D" guest_ok=n
Legenda:

Everyone: parola chiave per indicare "tutti"
F: Full Access
R: Read Access
D: Deny Access
DOMAIN (opzionale): normalmente coincide con il nome (hostname) del PC cui appartengono gli utenti di Samba USER_01 , USER_02
guest_ok: opzione per abilitare / disabilitare l'accesso non autenticato

Rimozione di uno share

Codice: Seleziona tutto

net usershare delete "SHARENAME"

Note:

- affinchè sia possibile utilizzare la direttiva guest_ok=y occorre abilitare nel file /etc/samba/smb.conf la direttiva usershare allow guests = yes

- affinchè sia possibile condividere una directory esterna alla propria Home directory occorre abilitare nel file /etc/samba/smb.conf la direttiva usershare owner only = false
Ultima modifica di thece il giovedì 18 marzo 2021, 13:59, modificato 4 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

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

Messaggio da thece »

Abilitazione del servizio WS Discovery

Il seguente procedimento ha come scopo quello di far apprire nel file manager (Explorer) dei PC Windows 7/8/10 gli share pubblicati attraverso il server Samba 4, installato sul PC Linux.


Sui PC Windows 7/8/10, dal pannello di controllo dei servizi (services.msc) modificare le proprietà dei seguenti servizi:

- Function Discovery Provider Host impostare Startup Type su Automatic
- Function Discovery Resource Publication impostare Startup Type su Automatic (Delayed Start)


Sul PC Linux installare il servizio WS Discovery nel seguente modo:

Codice: Seleziona tutto

sudo -s
cd /usr/src
apt update
apt install git
git clone https://github.com/christgau/wsdd.git
cd /usr/src/wsdd
cp /usr/src/wsdd/src/wsdd.py /usr/bin/wsdd
cp /usr/src/wsdd/etc/systemd/wsdd.service /etc/systemd/system
Modificare il file /etc/systemd/system/wsdd.service commentando le chiavi:

Codice: Seleziona tutto

; User=nobody
; Group=nobody
Abilitare l'avvio automatico e avviare il servizio WS Discovery

Codice: Seleziona tutto

systemctl daemon-reload
systemctl enable wsdd
systemctl start wsdd
systemctl status wsdd

Fonte 1
Fonte 2
Fonte 3
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti