Questa brevissima guida ha l’ obiettivo di guidare alla configurazione del server Samba per la distribuzione Ubuntu GNU/Linux, anche se la procedura è del tutto simile per qualsiasi altra distribuzione (a parte l’ installazione vera e propria dei pacchetti). Sulla falsa riga di quella relativa all’ ambiente LAMP, le istruzioni sono semplici e lineari: per dettagli ed approfondimenti vi rimando alla smisurata letteratura sull’ argomento.
Di seguito vedremo come configurare il server Samba per creare una condivisione pubblica: accessibile in lettura e scrittura a tutti i client della rete locale, quindi.
UPDATE: corrette alcune incongruenze nella scelta/uso del nome utente, inseriti parametri di sicurezza per la creazione dell’ utente.
Installazione di Samba
Per prima cosa installiamo il software necessario:
$ sudo apt-get install samba smbfs
Preparazione del sistema
Samba condivide con il sistema su cui gira il database degli utenti: tutti gli utenti Samba devono essere necessariamente anche utenti GNU/Linux. Creiamo ora l’ utente con cui tutti i client accederanno alla condivisione e specifichiamo la sua directory home, che adduser provvederà a creare (se non esiste) e che sarà la nostra condivisione Samba. L’ opzione “–shell=/bin/false” disabilita l’ accesso alla shell da parte dell’ utente creato, che non avrà quindi possibilità di fare un vero e proprio login interattivo. Questo per ragioni di sicurezza, come accade per gli account di sistema.
$ sudo adduser utente --home=/home/public --shell=/bin/false --disabled-password
L’ utente è stato creato correttamente (come possiamo verificare controllando il file /etc/passwd), ma non è associato ad alcuna password UNIX e non potrà fare login al sistema: non ne avremo bisogno e dormiremo sonni più tranquilli.
Impostiamo ora i permessi sulla directory da condividere:
$ sudo chmod -R 0700 /home/public $ sudo chown -R utente.utente /home/public
Configurazione di Samba – sezione [Global]
Il file di configurazione del server Samba è /etc/samba/smb.conf ed è suddiviso in diverse sezioni.
Browsing/Identification
Questa sezione, posta all’ inizio del file di configurazione, controlla il comportamento generale del server Samba. A noi interessano alcune voci in particolare: workgroup e server string. La prima indica a quale gruppo Windows apparterrà il nostro server, e la seconda fornirà il nome con cui sarà identificato nella rete Windows.
Un esempio:
# Change this to the workgroup/NT-domain name your Samba server will part of workgroup = UFFICIO # server string is the equivalent of the NT Description field server string = File Server
Authentication
Questa sezione regola il modo con cui Samba controllerà e governerà i permessi agli utenti: chi può fare cosa in parole povere. Ci interessano alcune voci: security e guest account.
Per prima cosa abilitiamo la sicurezza a livello di condivisione, che ci permette di specificare caso per caso i diritti:
#security = user security = share
Ora definiamo l’ utente con il quale tutti i client accederrano alla risorsa condivisa:
obey pam restrictions = yes guest account = utente invalid users = root
Questa impostazione non necessita di alcuna configurazione sui client: essi accederanno alla risorsa senza dover inserire alcuna login: sarà Samba a mappare l’ utente corretto.
Configurazione della condivisione
Ora passiamo alla fase finale della configurazione: creiamo la condivisione della directory.
Spostiamo alla fine del file di configurazione e creiamo una nuova sezione così strutturata:
[Pubblica] comment = Risorsa pubblica condivisa path = /home/public read only = no guest ok = yes guest only = yes create mask = 0600 directory mask = 0700
Salviamo il file e riavviamo Samba con:
$ sudo /etc/init.d/samba restart
che bello non aver bisogno di samba nella mia rete, comunque questa pagina entra di diritto nei miei bookmarks su Linux, potrebbe tornare utile.
Che fine ha fatto il verde? era bellissimo 🙁
Interessante.
Bello il nuovo look. 😀
hi..good site..by..
mhh bella guida ma non riesco a fare funzionare samba ( sono gnubbo) Ho seguito passo passo la guida ma se provo a connettermi da win mi da accesso negato e contattare l’amministratore e invece da un altra macchina con ubuntu non vede proprio la cartella condivisa 🙁
hai controllato per benino *tutti* i permessi (sia di files che di cartelle) e di aver impostato tutto correttamente? so che è una risposta banale, ma ti assicuro che quanto riportato nella guida è pensato appositamente per essere applicabile con il minor numero possibile di passaggi e variazioni.
hi nice site.
hi all.
Ciao, ho una macchina con 2 disk , hda monta ext3 -ubuntu , hdb NTFS,
il disco ntfs mi serve per fare il back up di una macchina windows xp (che uso per lavorare).
In due parole devo fare la sincronia di 2 cartelle su 2 macchine diverse in rete lan.
come software per il sync ho provato krusader (che ho trovato fantastico e veloce),
samba e Ntfs-config sono configurati ( manualmente riesco a fare l’operazione che voglio)
ma con krusader non riesco a vedere la rete lan, sul menù creare rete mi dà solo ftp e se cerco la lan mi dice che non è supportata— Quacuno ha una risposta o soluzione?
oppure un altro metodo per fare il sync?
io ho ubuntu 7.04 Feisty e krusader 1.8 beta (ho provato anhe 1.7 stable version)
grazie, andrea
se volete potete rispondermi anche su info@k6blue.it
ciao, non conosco il software che utilizzi. hai preso in considerazione altri programmi oppure uno script creato ad hoc?
Il software che utilizzo è krusader 1.8 beta, se ne conoscete altri sparate, per ora uso un software che gira su win xp (allwaysync) e mi fà il backup sul disco ntfs montato sulla macchina linux.
Però mi piacerebbe trovare un bel software da utilizzare con linux che si faccia i backup automatici..
spiego il sistema ::
PC 1 = win xp PC 2 = UBUNTU 7.04 Feisty
Disco NTFS Disco1 Ext3 – I – Disco 2 NTFS
Cartella Mster I Cartella Slave Backup
Il Mio scopo è :
Software installato su Ubuntu ogni (x Tempo) và sulla cartella Master (Win XP) e ne fà il backup sulla cartella Slave (NTFS) sulla macchina linux!!
ma proprio non riesco, premettendo che non sono un programmatore ma un grafico!
chi avesse una soluzione oltre ad essere eternamente ringraziato vincerà un servizio fotografico o video omaggio!! hahahah!
grazie in anticipo
Andrea
K6Blue studio
Ciao.
Se non ho capito male, ti basta fare uno script per la bash che faccia qualcosa del genere:
1) devi montare la cartella Master del PC WinXP su Linux, tramite Samba;
2) fai un bel tar di tutto quello che vuoi backupare di quella share nel file system che vuoi.
esempio stupidissimo …
# mount -t smb # tar -cvf backup.tar /mnt/backup const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf(){i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});