Home / Sistemi operativi & mobile / Linux / Mini guida a Samba
Mattepuffo

Mini guida a Samba

Mini guida a Samba

Samba è un servizio di condivisione file/stampanti in rete tramite protocollo SMB/CIFS.

Viene molto usato in ambito multi piattaforma per far condividere files in rete tra Windows e Linux/Mac OS X.

Grazie all'aiuto di zazu (forum.spreatech.it) sono riuscito a mettere su un sistema nella rete di casa.

Qui vi posto la mia piccola configurazione che è solo un punto di partenza.

Io l'ho configurato su Archlinux, ma valgono gli stessi concetti per le altre distro:

# pacman -Sy samba

# /etc/rc.d/samba start

Su Arch abbiamo già una configurazione di esempio nel file smb.conf.default.

Noi ne creeremo una nuova:

# cd /etc/samba/

# touch smb.conf

smb.conf è il file di configurazione della parte server.

Questo è il file di configurazione:

# cat /etc/samba/smb.conf
[global]
netbios name = CASA
workgroup = WORKGROUP
server string = Samba Archlinux
passdb backend = tdbsam
disable spoolss = yes
load printers = no
map to guest = Bad User
invalid users = root
usershare allow guests = Yes
domain logons = No
domain master = No
security = user
ldap suffix =
wins server =
wins support = No
###parametri  per migliorare la compatibilit� con windows ###
unix charset = ISO8859-15
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
###
### Shares ###

[privata]
comment = Risorsa privata
inherit acls = No
path = /media/hd
guest ok = no
create mask = 0660
directory mask = 0770
writeable = yes
browsable = yes

La parte [global] è quella generale.

 

CASA è il nome che verrà visto in rete.

WORKGROUP è il gruppo di lavoro, utile soprattutto quando si condividono le risorse con Windows.

Con invalid user ho disabilitato l'accesso a root (pratica consigliata per la sicurezza).

Poi ci stanno gli SHARES, cioè le condivisioni.

Io ne ho messa solo una e l'ho chiamata privata.

Le opzioni sono abbastanza esplicative.

Questa risorsa non accetta login anonimi.

A questo punto dovete tenere in considerazione che non bastano gli utenti di sistema per accedere alle condivisioni protette.

Dovete aggiungere gli utenti in samba:

# smbpasswd -a utente

Quindi prima dovete creare gli utenti nel sistema, e poi dovete aggiungerli in samba.

Nel mio caso io mi connetto direttamente col mio utente, quindi ho solo dovuto aggiungerlo in samba.

Però su un altro pc con Debian ho optato per un'altra configurazione:

  • una directory pubblica con login anonimo usando l'utente nobody (che è già incluso nel sistema)
  • una directory privata che ha come proprieatorio root:condivisione, così che tutti gli utenti del gruppo condivisione posso accedere alla dir

Qui ho solo dovuto aggiungere nobody a samba senza password:

# smbpasswd -an nobody

Notate il parametro n.

Poi:

  • ho creato un gruppo condivisione
  • ho aggiunto il mio utente al gruppo
  • ho creato la di privata
  • ho impostato il proprietario della directory su root:condivisione
  • ho aggiunto il mio utente in samba

A questo punto la configurazione viene una cosa così:

# cat /etc/samba/smb.conf
[global]
netbios name = DEBIAN
workgroup = WORKGROUP
server string = Serverozzo SAMBA su Debian
passdb backend = tdbsam
disable spoolss = yes
load printers = no
map to guest = Bad User
invalid users = root
usershare allow guests = Yes
domain logons = No
domain master = No
security = user
ldap suffix =
wins server =
wins support = No
###parametri  per migliorare la compatibilità con windows ###
unix charset = ISO8859-15
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
###
### Shares ###

[Pubblica]
comment = Risorsa pubblica condivisa
inherit acls = No
path = /home/public
guest ok = yes
guest only = no
guest account = nobody
create mask = 0666
directory mask = 0777
writeable = yes
browsable = yes

[Privata]
comment = Cartella privata
inherit acls = No
path = /home/private
guest ok = no
create mask = 0660
directory mask = 0770
writeable = yes
browsable = yes

Come vedete ci sono due SHARES.

Quello privato è uguale a quello di prima; in quello pubblico invece ho aggiunto alcune voci per guest e ho cambiato i permessi.

A questo punto abbiamo due condivisioni:

  • quella pubblica dove tutti possono accedere a fare tutto senza password
  • una privata con autenticazione

A questo punto direi di vedere la parte client.

Avete diversi modi per connettervi.

Se avete una GUI a disposizione consiglio di usare un file manager tipo Dolphin o Nautilus.

Basta che inserite nella barra degli indirizzi una cosa del genere:

smb://CASA (oppure l'indirizzo IP)

e vi compariranno le varie condivisioni.

Se invece volete/potete solo usare il terminale avete varie opzioni:

  • mount con CIFS
  • mount con SMBFS
  • smbclient

Vediamo velocemente gli utlimi due perchè il primo mi da sempre errori.

Con smbclient potete fare così per vedere le varie condivisioni:

# smbclient -L CASA -U%
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.9]

Sharename       Type      Comment
---------       ----      -------
privata         Disk      Risorsa privata
IPC$            IPC       IPC Service (Samba Archlinux)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.9]

Server               Comment
---------            -------
CASA                 Samba Archlinux

Workgroup            Master
---------            -------
WORKGROUP            CASA

Con -L listate tutte le condivisioni per l'utente -U; in questo caso per tutti gli utenti.

A questo punto per connettervi:

# smbclient \\\\CASA\\privata -U utente
Enter casa's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.9]
smb: \>

Mettendo la password impostata in smbpasswd (che può essere diversa da quella di sistema).

Vi comparirà un prompt dal quale potete eseguire dei comandi.

Per me però è meglio usare SMBFS.

Ecco i passaggi:

# mkdir /media/samba -> creazione directory di montaggio

# mount -t smbfs -o username=utente,password=pwdsamba //192.168.1.130/privata /media/samba -> montaggio

# cd /media/samba
# ls -l
totale 1082952
-rw-r--r-- 1 debian users      9799 21 mag 13.38 1.jpeg
drwxr-xr-x 3 debian users         0 11 lug 12.29 JavaMail
-rw-r--r-- 1 debian users   1466802 20 giu 15.28 Libro_ioProgrammo_111_Programmare_con_Ajax_ok.pdf
-rw-r--r-- 1 debian users   1005374 20 giu 15.27 Libro_ioProgrammo_112_60_Script_amministrativi_per_windows_OK.pdf
-rw-r--r-- 1 debian users   2477863 20 giu 15.31 Libro_ioProgrammo_113_Lavorare_con_JSP_ok.pdf
-rw-r--r-- 1 debian users   2103879 20 giu 15.32 Libro_ioProgrammo_121_Qsl_aspetti_avanzati_OK.pdf
-rw-r--r-- 1 debian users   1145608 20 giu 15.32 Libro_ioProgrammo_122_Imparare_pyton_OK.pdf
-rw-r--r-- 1 debian users   1382042 20 giu 15.33 Libro_ioProgrammo_132_Java_e_database_OK.pdf
-rw-r--r-- 1 debian users   2658622 20 giu 15.35 Libro_ioProgrammo_96_Guida_pratica_web_service_OK.pdf
drwx------ 2 debian users         0 16 apr 13.45 lost+found
-rw-r--r-- 1 debian users  44820359 25 giu 17.33 megapack_template_joomla.zip
-rw-r--r-- 1 debian users   1048953  5 lug 17.34 vRenamer_1.0.jar

Come vedete abbiamo montato la directory come fosse un hard disk.

A questo punto possiamo fare tutto ciò che ci pare (tenendo conto dei permessi impostati da samba).

Come vedete in fase di montaggio ho dovuto indicare l'IP piuttosto che il NetBios; avevo errori di risoluzione del nome.

Per smontare il tutto basta umount:

# cd -> usciamo dalla dir sennò risulta occupata

# umount /media/samba

Ciauz!