Condividere file tra Ubuntu 20.04 e sistemi Windows con Samba
Il Gennaio 21, 2022 da adminAnche se Linux ha fatto qualche incursione nel mercato dei desktop, le sue origini e il suo futuro sono molto basati sui server. Non è quindi sorprendente che Ubuntu abbia la capacità di agire come un file server. È anche estremamente comune che i sistemi Ubuntu e Windows siano usati fianco a fianco in ambienti di rete. È un requisito comune, quindi, che i file su un sistema Ubuntu siano accessibili ai sistemi basati su Linux, UNIX e Windows attraverso connessioni di rete. Allo stesso modo, le cartelle condivise e le stampanti che risiedono su sistemi Windows possono anche avere bisogno di essere accessibili da sistemi basati su Ubuntu.
I sistemi Windows condividono risorse come file system e stampanti utilizzando un protocollo noto come Server Message Block (SMB). Affinché un sistema Ubuntu possa servire tali risorse su una rete a un sistema Windows e viceversa, deve quindi supportare SMB. Questo si ottiene utilizzando una tecnologia chiamata Samba. Oltre a fornire l’integrazione tra sistemi Linux e Windows, Samba può anche essere usato per fornire la condivisione di cartelle tra sistemi Linux (come alternativa a NFS che è stato trattato nel capitolo precedente).
In questo capitolo vedremo i passi necessari per condividere risorse di file system e stampanti su un sistema Ubuntu con sistemi remoti Windows e Linux, e per accedere alle risorse Windows da Ubuntu.
1.1 Accedere alle risorse di Windows dal desktop GNOME
Prima di entrare nei dettagli della condivisione Samba, vale la pena notare che se tutto quello che si vuole fare è accedere alle cartelle condivise di Windows dall’interno del desktop GNOME di Ubuntu, allora il supporto è già fornito all’interno dell’applicazione GNOME Files. L’applicazione Files si trova nel dash come evidenziato nella Figura 23-1:
Figura 23-1
Una volta lanciata, seleziona l’opzione Other Locations nel pannello di navigazione di sinistra seguita dall’icona Windows Network nel pannello principale per navigare tra le risorse Windows disponibili:
Figura 23-2
1.2 Samba e Samba Client
Samba permette sia di condividere le risorse di Ubuntu con i sistemi Windows, sia di condividere le risorse di Windows con i sistemi Ubuntu. Ubuntu accede alle risorse Windows utilizzando il client Samba. Le risorse di Ubuntu, d’altra parte, sono condivise con i sistemi Windows installando e configurando il servizio Samba.
1.3 Installare Samba su un sistema Ubuntu
Le impostazioni predefinite utilizzate durante il processo di installazione di Ubuntu di solito non installano i pacchetti Samba necessari. A meno che tu non abbia specificamente richiesto che Samba sia installato, è improbabile che tu abbia Samba installato sul tuo sistema. Per controllare se Samba è installato, aprite una finestra di terminale ed eseguite il seguente comando:
# apt -qq list samba-common samba smbclient
Qualsiasi pacchetto mancante può essere installato usando lo strumento apt a riga di comando:
# apt install samba-common samba smbclient
1.4 Configurare il firewall di Ubuntu per abilitare Samba
In seguito, il firewall che attualmente protegge il sistema Ubuntu deve essere configurato per permettere il traffico Samba.
Se state usando il Uncomplicated Firewall (ufw) eseguite il seguente comando:
# ufw allow samba
In alternativa, se state usando firewalld, eseguite il comando firewall-cmd come segue:
# firewall-cmd --permanent --add-port={139/tcp,445/tcp}# firewall-cmd --reload
Prima di avviare il servizio Samba sono necessari alcuni passi di configurazione per definire come il sistema Ubuntu apparirà ai sistemi Windows, e le risorse che devono essere condivise con i client remoti. La maggior parte di questi compiti di configurazione avviene all’interno del file /etc/samba/smb. conf.
1.5 Configurare il file smb.conf
Samba è un sistema altamente flessibile e configurabile che fornisce molte opzioni diverse per controllare come le risorse sono condivise sulle reti Windows. Questa flessibilità può portare alla sensazione che Samba sia eccessivamente complesso da usare. In realtà, tuttavia, molte delle opzioni di configurazione non sono necessarie per l’installazione tipica, e la curva di apprendimento per impostare una configurazione di base è in realtà abbastanza breve.
Per gli scopi di questo capitolo vedremo come unire un sistema Ubuntu a un gruppo di lavoro Windows e impostare una directory come risorsa condivisa a cui può accedere un utente specifico. Questa è una configurazione nota come server Samba autonomo. Sono disponibili anche configurazioni più avanzate come l’integrazione di Samba all’interno di un ambiente Active Directory, sebbene queste siano al di fuori dello scopo di questo libro.
Il primo passo nella configurazione di Samba è modificare il file /etc/samba/smb.conf.
1.5.1 Configurare la sezione
Il file smb.conf è diviso in sezioni. La prima sezione è quella in cui possono essere specificate le impostazioni che si applicano all’intera configurazione di Samba. Mentre queste impostazioni sono globali, ogni opzione può essere sovrascritta in altre sezioni del file di configurazione.
Il primo compito è quello di definire il nome del gruppo di lavoro di Windows su cui le risorse di Ubuntu devono essere condivise. Questo è controllato tramite la direttiva workgroup = della sezione che per impostazione predefinita è configurata come segue:
workgroup = WORKGROUP
Cominciate a cambiarlo con il nome effettivo del gruppo di lavoro, se necessario.
Oltre all’impostazione del gruppo di lavoro, le altre impostazioni indicano che questo è un server autonomo su cui le risorse condivise saranno protette da password utente. Prima di passare alla configurazione delle risorse da condividere, è necessario aggiungere altri parametri alla sezione come segue:
.. netbios name = LinuxServer..
La proprietà “netbios name” specifica il nome con cui il server sarà visibile agli altri sistemi della rete.
1.5.2 Configurazione di una risorsa condivisa
Il passo successivo è la configurazione delle risorse condivise (in altre parole le risorse che saranno accessibili da altri sistemi della rete Windows). A tal fine, alla sezione viene dato un nome con cui verrà indicata quando condivisa. Per esempio, se abbiamo intenzione di condividere la directory /sampleshare del nostro sistema Ubuntu, potremmo intitolare la sezione . In questa sezione sono possibili diverse opzioni di configurazione. Per gli scopi di questo esempio, tuttavia, definiremo semplicemente la directory che deve essere condivisa, indicheremo che la directory è sia navigabile che scrivibile e dichiareremo la risorsa pubblica in modo che gli utenti ospiti siano in grado di accedervi:
comment = Example Samba share path = /sampleshare browseable = Yes public = yes writable = yes
Per limitare l’accesso a utenti specifici, può essere utilizzata la proprietà “utenti validi”, per esempio:
valid users = demo, bobyoung, marcewing
1.5.3 Rimuovere le condivisioni non necessarie
Il file smb.conf è preconfigurato con sezioni per condividere le stampanti e le cartelle home degli utenti sul sistema. Se queste risorse non hanno bisogno di essere condivise, le sezioni corrispondenti possono essere commentate in modo che vengano ignorate da Samba. Nel seguente esempio, la sezione è stata commentata:
..## comment = Home Directories# valid users = %S, %D%w%S# browseable = No# read only = No# inherit acls = Yes..
1.6 Creare un utente Samba
Ogni utente che richiede l’accesso a una risorsa condivisa Samba deve essere configurato come utente Samba e gli deve essere assegnata una password. Questo compito si ottiene usando lo strumento a riga di comando smbpasswd. Consideriamo, per esempio, che un utente chiamato demo è richiesto per essere in grado di accedere alla directory /sampleshare del nostro sistema Ubuntu da un sistema Windows. Per soddisfare questo requisito dobbiamo aggiungere demo come utente Samba come segue:
# smbpasswd -a demoNew SMB password:Retype new SMB password:Added user demo.
Ora che abbiamo completato la configurazione di un server Samba molto semplice, è il momento di testare il nostro file di configurazione e quindi avviare i servizi Samba.
1.7 Testare il file smb.conf
Le impostazioni nel file smb.conf possono essere controllate per eventuali errori usando lo strumento a riga di comando testparm come segue:
# testparmLoad smb config files from /etc/samba/smb.confrlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)WARNING: The "syslog" option is deprecatedProcessing section ""Processing section ""Processing section ""Loaded services file OK.Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parametersdns proxy = Nolog file = /var/log/samba/log.%mmap to guest = Bad Usermax log size = 1000netbios name = LINUXSERVERobey pam restrictions = Yespam password change = Yespanic action = /usr/share/samba/panic-action %dpasswd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .passwd program = /usr/bin/passwd %usecurity = USERserver role = standalone serverserver string = %h server (Samba, Ubuntu)syslog = 0unix password sync = Yesusershare allow guests = Yeswins support = Yesidmap config * : backend = tdb browseable = Nocomment = All Printerscreate mask = 0700path = /var/spool/sambaprintable = Yes comment = Printer Driverspath = /var/lib/samba/printers comment = Example Samba shareguest ok = Yespath = /sampleshareread only = No
1.8 Avviare i servizi Samba e NetBIOS nameservice
Per far funzionare un server Ubuntu all’interno di una rete Windows è necessario avviare entrambi i servizi Samba (SMB) e NetBIOS nameservice (NMB). Opzionalmente, abilitare anche i servizi in modo che si avviino ogni volta che il sistema si avvia:
# systemctl enable smbd# systemctl start smbd# systemctl enable nmbd# systemctl start nmbd
Prima di tentare la connessione da un sistema Windows, utilizzare l’utilità smbclient per verificare che la condivisione sia configurata:
# smbclient -U demo -L localhost Enter WORKGROUP\demo's password: Sharename Type Comment--------- ---- -------print$ Disk Printer Driverssampleshare Disk Example Samba shareIPC$ IPC IPC Service (demo-server2 server (Samba, Ubuntu))Officejet_Pro_8600_C7C718_ Printer Officejet_6600_971B9B_ Printer Reconnecting with SMB1 for workgroup listing. Server Comment--------- ------- Workgroup Master--------- -------WORKGROUP LINUXSERVER
1.9 Accesso alle condivisioni Samba
Ora che le risorse Samba sono configurate e i servizi sono in esecuzione, è il momento di accedere alla risorsa condivisa da un sistema Windows. Su un sistema Windows adatto sullo stesso gruppo di lavoro del sistema Ubuntu, apri Windows Explorer e naviga fino al pannello Rete. A questo punto, explorer dovrebbe cercare nella rete ed elencare tutti i sistemi che utilizzano il protocollo SMB che trova. La figura seguente illustra un sistema Ubuntu chiamato LINUXSERVER localizzato usando Windows Explorer su un sistema Windows 10:
Figura 23-3
Doppio clic sull’host LINUXSERVER richiederà il nome e la password di un utente con privilegi di accesso. In questo caso è l’account demo che abbiamo configurato usando lo strumento smbpasswd:
Figura 23-4
Inserendo il nome utente e la password, le risorse condivise configurate per quell’utente appariranno nella finestra di explorer, inclusa la risorsa /sampleshare configurata precedentemente:
Figura 23-5
Doppio clic sulla risorsa condivisa /sampleshare mostrerà un elenco dei file e delle directory in essa contenuti.
Se non sei in grado di vedere il sistema Linux o hai problemi ad accedere alla cartella condivisa, prova a mappare la condivisione Samba su un’unità locale di Windows come segue:
- Apri Esplora file di Windows, fai clic destro sulla voce Network nel pannello di sinistra e seleziona Map network drive… dal menu risultante.
- Dalla finestra di dialogo Map Network Drive, seleziona una lettera di unità prima di inserire il percorso alla cartella condivisa. Per esempio:
\LinuxServer\sampleshare
Abilita la casella di controllo accanto a Connect using different credentials. Se non vuoi che l’unità venga mappata ogni volta che accedi al sistema Windows, disattiva la casella di controllo corrispondente:
Figura 23-6
Con le impostazioni inserite, clicca sul pulsante Fine per mappare l’unità, inserendo quando richiesto il nome utente e la password dell’utente Samba configurato in precedenza nel capitolo. Dopo un breve ritardo il contenuto della condivisione Samba apparirà in una nuova finestra di File Explorer.
1.10 Accedere alle condivisioni di Windows da Ubuntu
Come menzionato in precedenza, Samba è una strada a doppio senso, permettendo non solo ai sistemi Windows di accedere a file e stampanti ospitati su un sistema Ubuntu, ma anche permettendo al sistema Ubuntu di accedere alle risorse condivise sui sistemi Windows. Questo si ottiene utilizzando il pacchetto smbclient che è stato installato all’inizio di questo capitolo. Se non è attualmente installato, installatelo da una finestra di terminale come segue:
# apt install smbclient
Le risorse condivise su un sistema Windows possono essere accessibili sia dal desktop di Ubuntu utilizzando l’applicazione Files, o dal prompt della riga di comando utilizzando gli strumenti smbclient e mount. I passi in questa sezione presuppongono che le appropriate impostazioni di condivisione della rete siano state abilitate sul sistema Windows.
Per accedere a qualsiasi risorsa condivisa su un sistema Windows usando il desktop GNOME, inizia lanciando l’applicazione Files e selezionando l’opzione Other Locations. Questo visualizzerà la schermata mostrata nella Figura 23-7 qui sotto, inclusa un’icona per la rete Windows (se ne viene rilevata una):
Figura 23-7
Selezionando l’opzione Rete Windows verranno visualizzati i sistemi Windows rilevati sulla rete e sarà possibile accedere a qualsiasi risorsa condivisa.
Figura 23-8
In alternativa, l’opzione Connetti al server può essere usata per connettersi a un sistema specifico. Si noti che il nome o l’indirizzo IP del sistema remoto deve essere preceduto da smb:// e può essere seguito dal percorso di una specifica risorsa condivisa, per esempio:
smb://WinServer10/Documents
Lascia un commento