LINUX: Configurazione di Samba

()

La configurazione di Samba è delicata. Negli esempi seguenti, si propone una configurazione minima.

Prima di passare alla configurazione vera e propria di Samba, conviene preparare quello che serve, o accertarsi che sia già stato predisposto, e precisamente:

un utente guest per gli accessi non controllati denominato pcguest;
-una directory condivisa da tutti gli utenti guest, per esempio /home/samba/;
-una directory di spool per la condivisione della stampante, condivisa da tutti gli utenti guest;
-verificare che il file /etc/services contenga i riferimenti necessari ai servizi NetBios;

Utente guest

Conviene aggiungere manualmente al file /etc/passwd la riga seguente.

guestpc::499:100::/dev/null:/dev/null

Come si può vedere, si tratta di un utente senza password, senza directory home e senza shell. Sotto questo aspetto, non dovrebbe costituire un problema di sicurezza. Il nome guestpc è scelto in base al valore predefinito da Samba per gli accessi generici senza particolari controlli. Il numero usato come UID va scelto in modo che non coincida con altri contenuti all’interno del file /etc/passwd; per quanto riguarda la scelta del GID (il numero del gruppo), questo dipende dalle particolari strategie adottate nella gestione degli utenti.Directory condivisa

Conviene predisporre una directory per gli accessi non controllati attribuendogli tutti i permessi necessari.

# mkdir /home/samba

# chmod a+rwx /home/sambaDirectory di spool per la stampa

Conviene predisporre una directory per lo spool delle stampe gestite da Samba, senza alcuna restrizione nei permessi.

# mkdir /var/spool/samba

# chmod a+rwx /var/spool/sambaVerificare /etc/services

Il file /etc/services deve contenere le righe seguenti.

netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service

Predisporre /etc/smb.conf

Quindi si può procedere a configurare Samba attraverso il suo file di configurazione /etc/smb.conf.

; =====================================================================
; /etc/smb.conf
; =====================================================================
;

[global]

allow hosts = 192.168.1.0/255.255.255.0 workgroup = UFFICIO guest account = guestpc printing = bsd printcap name = /etc/printcap

[public]

comment = directory pubblica path = /home/samba public = yes writable = yes printable = no browseable = yes

[lp]

comment = stampante pubblica path = /var/spool/samba public = yes writable = no printable = yes browseable = yes [global]

La sezione global è speciale e serve per stabilire i valori predefiniti per tutte le altre sezioni.

———

allow hosts

Permette di definire i computer host che possono accedere ai servizi di Samba. In questo caso si concede a tutta la sottorete 192.168.1.0 di accedere.

workgroup

Permette di definire il nome del gruppo di lavoro. Il valore predefinito, nel caso non sia indicato, dovrebbe essere WORKGROUP a seconda di come è stato compilato il sorgente.

guest account

Permette di definire il nome di un utente generico da considerare guest, al quale è consentito utilizzare i servizi pubblici. Questo utente era stato aggiunto al file /etc/passwd come segue.

guestpc::499:100::/dev/null:/dev/null

printing

Assegnando a questa variabile il valore bsd si informa Samba che il sistema di stampa utilizza il programma lpr.

printcap name

Il nome del file /etc/printcap, completo del percorso.[public]

Si tratta della definizione di un servizio denomianto public creato per permettere l’accesso indiscriminato alla directory /home/public.

comment

Si tratta della descrizione del servizio.

path

È il percorso della directory pubblica. Perché possa essere veramente disponibile a tutti occorre che i suoi permessi di accesso consentano tutte le operazioni a tutti gli utenti.

public

Permette di definire se si tratta o meno di un servizio pubblico.

writable

Permette di definire se gli utenti di questo servizio possono accedere anche in scrittura.

printable

Permette di definire se si tratta di un servizio di stampa. In questo caso, evidentemente no.[lp]

Si tratta della definizione di un servizio denomianto lp creato per permettere l’accesso indiscriminato alla stampante omonima (lp) del file /etc/printcap. In pratica rende pubblica, attraverso Samba, questa stampante.

path

Definisce il percorso della directory che Samba userà come area di spool. Non si deve confondere questa directory con quelle già utilizzate con il sistema di stampa normale, questo perché si deve trattare di una directory accessibile a tutti.

public

Permette di definire se si tratta o meno di un servizio pubblico.

writable

Permette di definire se gli utenti di questo servizio possono accedere anche in scrittura. In questo caso, no, trattandosi di un servizio di stampa.

printable

Permette di definire se si tratta di un servizio di stampa.

Verifica del funzionamento

Per controllare la correttezza sintattica del file di configurazione /etc/smb.conf si può utilizzare il programma testparm.

$ testparm [Invio]

Si dovrebbe ottenere un elenco suddiviso in due parti. Segue solo la prima parte.

Load smb config files from /usr/local/samba/lib/smb.conf
Processing section "[public]"
Loaded services file OK.
Press enter to see a dump of your service definitions

Premendo [Invio] si ottiene il resto delle informazioni, che riguardano la configurazione, così come è stata interpretata, completa di tutti i valori predefiniti.

Il passo successivo è quello di controllare che il servizio sia effettivamente funzionante. Se il computer che si utilizza e sul quale è installato Samba, si chiama topolino (topolino.zigozago.dg), si può utilizzare il programma smbclient nel modo seguente.

$ smbclient -L topolino [Invio]

Si dovrebbe ottenere il risultato seguente.

Added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
Server time is Wed Apr 9 10:47:46 1997
Timezone is UTC-0.0
Domain=[UFFICIO] OS=[Unix] Server=[Samba 1.9.16p11]

Server=[topolino] User=[daniele] Workgroup=[UFFICIO] Domain=[UFFICIO]

Sharename Type Comment
——— —- ——-
IPC$ IPC IPC Service (Samba 1.9.16p11)
lp Printer stampante pubblica
public Disk directory pubblica

This machine has a browse list:

Server Comment
——— ——-
TOPOLINO Samba 1.9.16p11

This machine has a workgroup list:

Workgroup Master
——— ——-
UFFICIO TOPOLINO

Come ulteriore verifica finale, si può fingere di accedere attraverso smbclient al servizio public del proprio computer.

$ smbclient “\\\\TOPOLINO\\PUBLIC” [Invio]

I nomi del computer e del servizio sono scritti con lettere maiuscole intenzionalmente, non perché ciò sia necessario, ma perché è possibile. Infatti, molti client di servizi NetBios sono in grado di utilizzare solo nomi composti da lettere maiuscole.

Il risultato dovrebbe essere il seguente.

Added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
Server time is Wed Apr 9 11:00:13 1997
Timezone is UTC-0.0
Password:

Dal momento che si fa riferimento a un servizio pubblico, non si inserisce alcuna password: si preme semplicemente [Invio].

Domain=[UFFICIO] OS=[Unix] Server=[Samba 1.9.16p11]
smb: \>

A questo punto, smbclient si comporta come un programma di FTP. Per terminare l’esecuzione di smbclient è sufficiente scrivere il comando quit.

Componenti di Samba

nmbd

nmbd [<opzioni>]

È il daemon del servizio necessario per la gestione del name server netbios, per le connessioni SMB (Samba). A seconda di come è gestita la particolare distribuzione Linux che si utilizza, potrebbe essere avviato direttamente dalla procedura di inizializzazione (init), oppure dal dal supervisore inetd ( inetd).

smbd

smbd [<opzioni>]

È il daemon del servizio necessario per ricevere connessioni SMB (Samba). A seconda di come è gestita la particolare distribuzione Linux che si utilizza, potrebbe essere avviato direttamente dalla procedura di inizializzazione (init), oppure dal dal supervisore inetd ( inetd).

60.6 Conclusione

Le indicazioni di questo capitolo su Samba non sono esaurienti. Se esiste la necessità di lavorare seriamente in modo integrato con un ambiente di rete NetBios, è necessario approfondire l’argomento con la documentazione originale, eventualmente cominciando da SMB HOWTO.

Installazione

Samba e’ diventato molto popolare ultimamente ed e’quindi di base in ogni distribuzione che si rispetti, seavete una distribuzione un po datata o volete essere aggiornatissimi (cosa buona e giusta per aumentare lasicurezza della vostra rete) potete scaricare il pacchettodal sito della casamadre.
Come sempre per l’installazione del programma e’necessario seguire i passi descritti nel tutorial apposito.

Avvio dei servizi

Per il corretto funzionamento del programma e’ necessariol’avvio di due demoni (processi che lavorano sempre inbackground):

  • smbd: utilizzato per ricevere le connessioni SMB;
  • nmbd: che gestisce la risoluzione dei nomi durante le connessioni SMB.

inserendo in uno dei file di init (/etc/rc.d/rc.local) leseguenti righe:

nmbd -D
smbd -D

Configurazione

Per la configurazione di SAMBA si utilizza il file/etc/smb.conf (come sempre un normalissimo files ASCII, maquesta volta diviso per sezioni come richiede lo stileWindows).

Preparativi

Prima di editare il e’ necessario creare alcune directory, quindi:

mkdir /directory/condivisa
chmod a+rwx /directory/condivisa

per creare la directory pubblica per SAMBA e:

mkdir /var/spool/samba
chmod a+rwx /var/spool/samba

Per creare la directory di spool.
Ok possiamo passare alla modifica, o alla creazione, delfile.

Clicca per Ingrandire l'immagine

La sezione [global]

E’ la sezione generale e forse la piu’ importante delfile, un esempio, ovviamente da personalizzare, e’:

[global]

workgroup = gruppo_di_lavoro
guest account = nobody
printing = bsd
printcap name = /etc/printcap

Vediamo di spiegare il significato delle righe sopraproposte:

  • workgroup: informa SAMBA che dovra’ inserire la macchina linux nel gruppo specificato;
  • guest account: permette di definire il nome di un utente generico al quale consentire l’accesso ai servizi pubblici (di solito e’ nobody);
  • printing: assegnando alla variabile la stringa bsd permettiamo a SAMBA di utilizzare lpr per le stampe;
  • pintcap name: il percorso del file del file con le specifiche delle stampanti (in Linux /etc/printcap).

La sezione [homes]

Questa sezione permette agli utenti loggati sulla macchinaWindows di accedere alla loro Home Directory Linux.Ovviamente questa sezione e’ opzionale.

[homes]

Comment = Home directory
browsable = no
read only = no
printable = no
create mode = 0750

  • comment: setta il commento che windows visualizzera’ durante la connessione;
  • browsable: settando al variabile a no si impedisce che la risorsa venga visualizzata da tutti gli utenti;
  • read only: non lo spiego per non offendervi :-);
  • printable: ovviamente non si tratta di una stampante;
  • create mode: ogni file creato dall’utente dalla macchina windows avra’ questi di permessi.

La sezione [public]

comment = Directory Pubblica
path = /dir/condivisa
browsable = yes
read only = no
public = yes
create mode = 0777

La directory /dir/condivisa sara’ utilizzabile e visibileda tutti, scrivibile, e i file che vi saranno memorizzatiavranno permessi massimi (rwx per tutti).

Clicca per ingrandire l'immagine

La sezione [lp]

[lp]
comment = Stampante Pubblica
path = /var/spool/samba
browsable = yes
printable = yes
writable = no
public = yes

Conclusione della configurazione

Il nostro file e’ pronto e possiamo finalmente salvarlo.Adesso dobbiamo riavviare i servizi smbd e nmbd con icomandi:

smbd restart && nmbd restart

Adesso tutte le macchine Windows saranno in grado di”vedere” la macchina Linux come se fosse un lorosimile (giammai).

Configurazione delle macchine Windows (o findus che dir sivoglia)

Se adesso provassimo ad accedere alla macchina Linux daWindows sicuramente verremmo respinti.Per accedere allemacchine windows occorre l’inserimento di una chiave nelregistro di configurazione (detto anche”miiiiiiiiiiiiiii che casinoooooooooo“).Avviiamo l’editor del registro con Start – Esegui -regedit

Windows 95, 98, ME

Andiamo in”Hkey_local_Machine/System/CurrentControlSet/Services/VxD/VNETSUP”e selezioniamo “Modifica – Nuovo Valore DWORD”diamo alla chiave il nome “EnablePlainTextPassword”e premendo invio il valore esadecimale 1.

Windows NT

Dobbiamo inserire la medesima chiave nella sezione:

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Rdr/Parameters/

Windows 2000

Dobbiamo inserire la medesima chiave nella sezione:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanWorkStationParameters

Nel pacchetto di SAMBA esistono dei file .reg che permettonodi aggiungere le chiavi in automatico.

Ora riavviando le macchine Windows (mi pareva strano) potremofinalmente accedere alla macchina Linux fornendoall’avvio di Microsoft Network un nome utente attivosulla macchina Linux e la password al momentodell’accesso alle risorse condivise.

Clicca per ingrandire l'immagine

Linux e i file in Windows

Eccovi ora il comando grazie al quale potrete montare lerisorse condivise di una macchina Windows sulla vostra LinuxBox:

smbmount //nome_pc_sulla_rete/nome_risorsa/punto/di/mount

mentre per smontarle

smbumount /punto/di/mount

Clicca per ingrandire l'immagine

Adesso abbiamo finito siamo finalmente in grado di poterlavorare con Linux in una rete Windows. 

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?