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
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- come utente proprietario l'utente di sistema thece
- come gruppo proprietario il gruppo di sistema thece
Codice: Seleziona tutto
sudo chown thece:thece /condivisaCodice: Seleziona tutto
sudo chmod 755 /condivisa 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 sambaCodice: Seleziona tutto
sudo apt install cifs-utils smbclientCodice: Seleziona tutto
cd /etc/sambaCome 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.originalCreo il nuovo file di configurazione personalizzato
Codice: Seleziona tutto
sudo touch /etc/samba/smb.conf
sudo chmod 644 /etc/samba/smb.conf
Codice: Seleziona tutto
sudo gedit /etc/samba/smb.confCodice: 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
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
Codice: Seleziona tutto
testparm -sCodice: Seleziona tutto
testparm -svCodice: 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 theceLa 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.
