GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Installa e configura Samba Server su Ubuntu per la condivisione di file

In questo tutorial impareremo come installare e configurare un server Samba su Ubuntu per condividere file sulla rete locale. Samba è un'implementazione del protocollo SMB/CIFS gratuita e open source per Unix e Linux che consente la condivisione di file e stampe tra macchine Unix/Linux, Windows e macOS in una rete locale.

Samba è solitamente installato ed eseguito su Linux. Comprende diversi programmi che servono scopi diversi ma correlati, i due più importanti dei quali sono:

  • smd :fornisce il servizio SMB/CIFS (condivisione e stampa di file), può anche fungere da controller di dominio Windows.
  • nmbd :questo demone fornisce il servizio dei nomi NetBIOS, ascolta le richieste del server dei nomi. Consente inoltre di trovare il server Samba da altri computer sulla rete.

Come installare Samba Server su Ubuntu

Samba è incluso nella maggior parte delle distribuzioni Linux. Per installare Samba su Ubuntu, esegui semplicemente il seguente comando nel terminale.

sudo apt install samba samba-common-bin

L'ultima versione stabile disponibile è la 4.12.0, rilasciata il 03 marzo 2019. Per controllare la tua versione di Samba, esegui

smbd --version

Esempio di output:

Version 4.7.6-Ubuntu

Per verificare se il servizio Samba è in esecuzione, immetti il ​​seguente comando.

systemctl status smbd nmbd

Per avviare questi due servizi, immetti il ​​seguente comando:

sudo systemctl start smbd nmbd

Una volta avviato, smbd sarà in ascolto sulle porte TCP 139 e 445. nmbd sarà in ascolto sulle porte UDP 137 e 138.

  • TCP 139:utilizzato per la condivisione di file e stampanti e altre operazioni.
  • TCP 445:la porta CIFS senza NetBIOS.
  • UDP 137:utilizzato per la navigazione in rete NetBIOS.
  • UDP 138:utilizzato per il servizio nomi NetBIOS.

Se hai abilitato il firewall UFW su Ubuntu, devi aprire le porte sopra nel firewall con il seguente comando.

sudo ufw allow samba

Crea una condivisione Samba privata

In questa sezione vedremo come creare una condivisione Samba privata che richiede al client di inserire nome utente e password per poter accedere. Il file di configurazione principale di Samba si trova in:/etc/samba/smb.conf . Puoi modificarlo nel terminale con un editor di testo a riga di comando come nano .

sudo nano /etc/samba/smb.conf

Nel [global] sezione, assicurati che il valore di workgroup è lo stesso con le impostazioni del gruppo di lavoro dei computer Windows.

workgroup = WORKGROUP

Puoi trovare l'impostazione sul tuo computer Windows andando su Control Panel> System and Security> System .

Quindi scorri verso il basso fino alla fine del file. (Nell'editor di testo nano, puoi ottenerlo premendo CTRL+W quindi CTRL+V . ) Aggiungi una nuova sezione come di seguito.

[Private]

comment = needs username and password to access
path = /srv/samba/private/
browseable = yes
guest ok = no
writable = yes
valid users = @samba

Spiegazione:

  • Private è il nome della cartella che verrà visualizzata sulla rete Windows.
  • Il commento è una descrizione per la cartella condivisa.
  • Il parametro path specifica il percorso della cartella condivisa. Uso /srv/samba/private/ come esempio. Puoi anche utilizzare una cartella nella tua home directory.
  • browseable = yes :Consenti ad altri computer nella rete di vedere il server Samba e la condivisione Samba. Se impostato su no, gli utenti devono conoscere il nome del server Samba e quindi immettere manualmente un percorso nel file manager per accedere alla cartella condivisa.
  • guest ok = no :Disabilita l'accesso come ospite. In altre parole, devi inserire nome utente e password sul computer client per accedere alla cartella condivisa.
  • writable = yes :concede sia l'autorizzazione di lettura che quella di scrittura ai client.
  • valid users = @samba :Solo gli utenti nel gruppo samba possono accedere a questa condivisione Samba.

Salva e chiudi il file. (Per salvare il file nell'editor di testo nano, premi Ctrl+O , quindi premere Invio per confermare il nome del file da scrivere. Per chiudere il file, premi Ctrl+X .) Ora dobbiamo creare un utente Samba. Innanzitutto, dobbiamo creare un account utente Linux standard con il seguente comando. Sostituisci username con il nome utente desiderato.

sudo adduser username

Ti verrà chiesto di impostare una password Unix. Dopodiché, devi anche impostare una password Samba separata per il nuovo utente con il seguente comando:

sudo smbpasswd -a username

Crea il gruppo samba.

sudo groupadd samba

E aggiungi questo utente al gruppo samba.

sudo gpasswd -a username samba

Crea la cartella di condivisione privata.

sudo mkdir -p /srv/samba/private/

Il gruppo samba deve avere i permessi di lettura, scrittura ed esecuzione sulla cartella condivisa. È possibile concedere queste autorizzazioni eseguendo il comando seguente. (Se il tuo sistema non ha il setfacl comando, devi installare il acl pacchetto con sudo apt install acl .)

sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/

Quindi, esegui il comando seguente per verificare se sono presenti errori sintattici.

testparm

Ora non resta che riavviare smbd e nmbd demone.

sudo systemctl restart smbd nmbd

Come creare una condivisione pubblica Samba senza autenticazione

Per creare una condivisione pubblica senza richiedere nome utente e password, devono essere soddisfatte le seguenti condizioni.

  • Imposta security = user nella sezione globale del file di configurazione di Samba. Sebbene tu possa creare una condivisione pubblica con security = share modalità, ma questa modalità di sicurezza è obsoleta. Si consiglia vivamente di evitare la share modalità.
  • Imposta map to guest = bad user nella sezione globale del file di configurazione di Samba. Ciò causerà smbd utilizzare un account ospite per autenticare i client che non hanno un account registrato sul server Samba. Poiché si tratta di un account ospite, i clienti Samba non hanno bisogno di inserire la password.
  • Imposta guest ok = yes nella definizione di condivisione per consentire l'accesso come ospite.
  • Concedi a nobody i permessi di lettura, scrittura ed esecuzione della cartella pubblica account, che è l'account ospite predefinito.

In effetti, le prime due condizioni sono già soddisfatte poiché Samba utilizza di default queste due impostazioni.

Ecco una guida passo passo per creare una condivisione pubblica. Innanzitutto, apri e modifica il file di configurazione di Samba.

sudo nano /etc/samba/smb.conf

Nel [global] sezione, assicurati che il valore di workgroup è lo stesso con le impostazioni del gruppo di lavoro dei computer Windows.

workgroup = WORKGROUP

Puoi trovare l'impostazione sul tuo computer Windows andando su Control Panel> System and Security> System .

Quindi scorri verso il basso fino alla fine del file e incolla le seguenti righe.

[public]

comment = public share, no need to enter username and password
path = /srv/samba/public/
browseable = yes
writable = yes
guest ok = yes

Salva e chiudi il file. Quindi, crea il /srv/samba/public/ cartella.

sudo mkdir -p /srv/samba/public

Quindi assicurati che nobody account ha leggere, scrivere ed eseguire l'autorizzazione sulla cartella pubblica eseguendo il comando seguente. (Se il tuo sistema non ha il setfacl comando, devi installare il acl pacchetto con sudo apt install acl .)

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

Riavvia smbd e nmbd.

sudo systemctl restart smbd nmbd

Accesso alla cartella condivisa Samba da Windows

Su un computer Windows che si trova nella stessa rete, apri Esplora file e fai clic su Network nel riquadro di sinistra. Se viene visualizzato il seguente messaggio, è necessario fare clic sul messaggio e attivare il rilevamento della rete e la condivisione di file.

File sharing is turned off. Some network computers and devices might not be visible.

Quindi, inserisci \\ seguito dall'indirizzo IP del server Samba nella barra degli indirizzi di Esplora file, in questo modo:\\192.168.0.102 . Vedrai un elenco di risorse condivise sul server Samba.

Quindi fare doppio clic sulla cartella condivisa. Per accedere alla condivisione privata, devi inserire il nome utente e la password di samba. Non è necessario farlo per accedere alla condivisione pubblica.

Una volta connesso, puoi leggere, scrivere ed eliminare file nella cartella condivisa di Samba.

Errore di connessione

Se ricevi il seguente errore:

You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.

Puoi provare a connetterti alla condivisione Samba dal prompt dei comandi. Apri un prompt dei comandi, quindi esegui il comando seguente per chiudere la sessione Samba corrente.

net use \\samba-server-ip\share-name /delete

Quindi, connettiti alla condivisione Samba con il seguente comando:

net use \\samba-server-ip\share-name /user:samba-username password

Una volta completato correttamente il comando precedente, vai alla scheda Rete in Esplora file e ora dovresti essere in grado di accedere alla condivisione Samba.

Mappatura unità su Windows

Una caratteristica del sistema operativo Windows è la capacità di mappare una lettera di unità (come S:) a una directory remota. Per mappare la lettera di unità S: nella condivisione Samba, fai clic con il pulsante destro del mouse sulla cartella condivisa Samba e seleziona Mappa unità di rete . Quindi scegli una lettera di unità e fai clic su Fine.

Una volta stabilita la mappatura dell'unità, le applicazioni possono accedere ai file nella condivisione Samba tramite la lettera dell'unità S: . E questa condivisione Samba verrà automaticamente montata quando accedi al tuo computer Windows.

Accesso alla cartella condivisa Samba in Nautilus File Manager su Linux

Se stai utilizzando il file manager Nautilus, fai clic su Other Locations nel riquadro di sinistra. In basso vedrai un'opzione per connetterti al server . Per accedere alla tua condivisione Samba, digita smb:// seguito dall'indirizzo IP del server Samba e premere Invio. Ad esempio:

  • smb://192.168.0.102

Vedrai un elenco di risorse condivise sul server Samba.

Se fai clic sulla cartella condivisa privata, dovrai inserire il nome utente e la password di Samba. Se fai clic sulla cartella condivisa pubblica, scegli di connetterti come Anonimo.

Se viene visualizzato il seguente messaggio di errore,

failed to retrieve share list from server

Puoi provare a correggere questo errore montando la condivisione Samba dalla riga di comando, che è discussa di seguito.

Monta automaticamente la condivisione Samba dalla riga di comando su Linux

Nota :Montaggio automatico della Samba share è fatto sui clienti. Questi comandi devono essere eseguiti su un client Samba, se il client Samba esegue Linux. Non dovresti farlo sul server Samba stesso.

Se hai bisogno di montare automaticamente la condivisione Samba all'avvio, puoi usare la riga di comando per montare e quindi aggiungere una voce in /etc/fstab file. Per farlo, devi installare cifs-utils pacchetto.

CentOS/RHEL

sudo dnf install cifs-utils

Debian/Ubuntu

sudo apt install cifs-utils

Quindi crea un punto di montaggio per la condivisione Samba.

sudo mkdir /mnt/samba-private

Ora puoi utilizzare il seguente comando per montare una cartella condivisa privata.

sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/

Ti chiederà di inserire la password Samba. Successivamente, verrà montato su /mnt/samba-private/ directory.

Per montare automaticamente la condivisione Samba, modifica /etc/fstab file.

sudo nano /etc/fstab

Aggiungi la seguente riga nel file.

//192.168.0.102/private  /mnt/samba-private   cifs    x-systemd.automount,_netdev,credentials=/etc/samba-credential.conf,uid=1000,gid=1000,x-gvfs-show   0   0

Dove:

  • //192.168.0.102/privato :l'indirizzo IP del server Samba e il nome della condivisione.
  • /mnt/samba-private :punto di montaggio per la condivisione Samba.
  • cif :tipo di filesystem
  • x-systemd.automount :Questa opzione dice a systemd di creare un'unità di montaggio automatico per il file system. Lo usiamo perché assicura che il filesystem remoto sia montato solo dopo che c'è l'accesso alla rete.
  • _netdev :specifica che la montatura richiede la rete.
  • credenziali= :Linux dovrebbe cercare le credenziali in /etc/samba-credential.conf file.
  • uid=1000,gid=1000 :Per impostazione predefinita, il filesystem montato sarebbe di proprietà dell'utente root. Usiamo uid e gid per cambiare la proprietà del filesystem. Normalmente usi il tuo uid e gid , che sono entrambi 1000 per impostazione predefinita.
  • x-gvfs-show :Se stai usando l'ambiente desktop GNOME o suoi derivati, puoi usare questa opzione per mostrare il file system montato nel file manager.

Salva e chiudi il file. Quindi crea il file delle credenziali.

sudo nano /etc/samba-credential.conf

Aggiungi le seguenti righe nel file.

username=your_samba_username
password=samba_password
domain=WORKGROUP

Salva e chiudi il file. Assicurati che solo l'utente root possa leggere questo file.

sudo chmod 600 /etc/samba-credential.conf

Se riavvii ora il tuo computer Linux, la condivisione Samba verrà automaticamente montata. Puoi anche eseguire il comando seguente per montare la condivisione Samba senza riavviare.

sudo mount -a

Se vedi l'errore di autorizzazione negata e puoi trovare la riga seguente eseguendo sudo dmesg comando,

VFS: cifs_mount failed w/return code = -13

probabilmente è perché hai un errore di battitura in /etc/samba-credential file.

Non riesci a scrivere sulla condivisione Samba?

Il montaggio CIFS descritto sopra consente di scrivere nella condivisione Samba. Se viene visualizzato il seguente errore durante la creazione di un file:

Read-only file system

Verifica di aver impostato writable = yes nel file di configurazione di Samba. A volte, la cartella condivisa Samba si trova su un disco rigido esterno, quindi assicurati di montare il disco rigido esterno in modalità di lettura-scrittura sul server Samba. Ad esempio, ho montato il mio btrfs disco rigido con la seguente riga in /etc/fstab.

LABEL=5TB   /mnt/5TB   btrfs   defaults   0   0

Si scopre che i defaults l'opzione non consente operazioni di scrittura. Per renderlo scrivibile, aggiungi rw opzione.

LABEL=5TB   /mnt/5TB   btrfs   defaults,rw   0   0

Quindi smonta il disco rigido. Devi usare il tuo punto di montaggio.

sudo umount /mnt/5TB

E montalo di nuovo.

sudo mount -a

Suggerimento per la risoluzione dei problemi

Se il tuo server Samba non funziona come previsto, puoi controllare i file di registro in /var/log/samba/ directory. Puoi aggiungere la seguente riga in [global] sezione di /etc/samba/smb.conf file per aumentare il livello di registro se desideri registrare più informazioni.

log level = 2

Ubuntu
  1. Come installare e configurare un server NFS su Ubuntu 20.04

  2. Come installare e configurare VNC su Ubuntu 20.04

  3. Come installare e configurare il server DHCP su Ubuntu 20.04

  4. Come installare e configurare il server Redis in Ubuntu

  5. Come installare e configurare samba su Ubuntu Linux?

Come installare e configurare il server LAMP su Ubuntu

Come installare e configurare il server OpenLDAP su Ubuntu 16.04

Come installare e configurare VNC su Ubuntu Server 20.04

Come installare e configurare la condivisione di file Samba su Ubuntu 20.04

Installa e configura Virtualmin su Ubuntu 20.04 / Debian 10 Server

Come installare e configurare Samba su Ubuntu 20.04