Installazione step by step di samba attraverso i pacchetti RPM e la compilazione dei sorgenti.
TAR.GZ - COMPILAZIONE DEI SORGENTI:
- Download dei sorgenti
Si scarica il tar.gz di Samba dal sito ufficiale o uno dei suoi mirror:
root@SATURNO root]# wget ftp://it.samba.org/pub/samba/samba-latest.tar.bz2
--16:45:01-- ftp://it.samba.org/pub/samba/samba-latest.tar.bz2
=> `samba-latest.tar.bz2'
Resolving it.samba.org... done.
Connecting to it.samba.org[217.56.103.6]:21...
[...]
- Scompattazione sorgenti
[root@SATURNO root]# tar -jxvf samba-latest.tar.bz2
[..]
[root@SATURNO root]# cd samba-2.2.8/
[root@SATURNO samba-2.2.8]# ls -l
total 102
-rw-r--r-- 1 783 783 17982 May 4 1996 COPYING
Directory contenente documentazione di vario genere e in vari formati
drwxr-xr-x 10 783 783 1024 Feb 5 17:24 docs
Directory contenente esempi di file di configurazione oltre a tools o script per la gestione della configurazione di samba
drwxr-xr-x 16 783 783 1024 Mar 15 05:28 examples
-rw-r--r-- 1 783 783 4551 Apr 30 2002 Manifest
Directory contenente files di configurazione e relativi script per la creazione di package per vari OS e distribuzioni di Linux
drwxr-xr-x 15 783 783 1024 May 3 2002 packaging
Directory contenente sorgenti di un semplice monitoring della shared memory
drwxr-xr-x 2 783 783 1024 May 3 2002 pcp
-rw-r--r-- 1 783 783 0 Aug 21 1997 Read-Manifest-Now
-rw-r--r-- 1 783 783 8412 Feb 28 16:56 README
-rw-r--r-- 1 783 783 1894 Apr 14 2001 Roadmap
Directory contenente i sorgenti
drwxr-xr-x 33 783 783 1024 Mar 15 05:28 source
Directory contenente il tool swat per la configurazione di samba via web
drwxr-xr-x 5 783 783 1024 Mar 15 05:28 swat
Directory contenente, script, sorgenti e altro per eseguire alcuni test su samba
drwxr-xr-x 9 783 783 1024 Mar 15 05:28 testsuite
-rw-rw-r-- 1 783 783 59481 Mar 15 05:44 WHATSNEW.txt
-Compilazione sorgenti
La compilazione dei sorgenti avviene come nella maggior parte dei casi con il lancio dello script configure per il settaggio di alcuni parametri e il comando make per la compilazione e installazione dei sorgenti.
[root@SATURNO samba-2.2.8]# cd source/
Per richiamare l'elenco delle opzioni e la relativa spiegazione, lanciare il seguente comando:
[root@SATURNO source]#./configure --help
Di seguito sono riportate le opzioni con relativa spiegazione utilizzati per la creazione dell' RPM per la distribuzione redhat.
Imposta il prefisso del path di installazione
--prefix=%{prefix} \
Imposta la directory ove il sistema scrive tutte quelle informazioni come log, pidfile etc.
--localstatedir=/var \
Imposta la directory contenente tutti i file di configurazione
--with-configdir=/etc/samba \
Specifica la directory ove viene messo smbpasswd
--with-privatedir=/etc/samba \
Specifica la directory dove risiedono i code page files
--with-codepagedir=/etc/codepages \
Abilita l'uso dei path fhs-compliant
--with-fhs \
Abilita il supporto per quota
--with-quotas \
Include il supporto per MS Dfs
--with-msdfs \
Abilita il supporto per smbmount
--with-smbmount \
Abilità il supporto per l'uso di PAM password database
--with-pam \
Include anche il modulo smbpass
--with-pam_smbpass \
Abilita il supporto del logging via syslog
--with-syslog \
Include utmp accounting
--with-utmp \
Specifica dove vengono installati i file riguradanti a swat
--with-sambabook=%{prefix}/share/swat/using_samba \
--with-swatdir=%{prefix}/share/swat \
Abilita la compilazione delle librerie dinamiche del client
--with-libsmbclient
[root@SATURNO source]# ./configure --prefix=/usr \
--localstatedir=/var \
--with-configdir=/etc/samba \
--with-privatedir=/etc/samba \
--with-codepagedir=/etc/codepages \
--with-fhs \
--with-quotas \
--with-msdfs \
--with-smbmount \
--with-pam \
--with-pam_smbpass \
--with-syslog \
--with-utmp \
--with-sambabook=/usr/share/swat/using_samba \
--with-swatdir=/usr/share/swat
[...]
checking for poptGetContext in -lpopt... yes
checking whether to use included popt... no
checking configure summary... yes
updating cache ./config.cache
creating ./config.status
creating include/stamp-h
creating Makefile
creating script/findsmb
creating include/config.h
Compilazione dei sorgenti
[root@SATURNO source]# make
Using FLAGS = -O -Iinclude -I./include -I./ubiqx -I./smbwrapper -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DLOGFILEBASE="/var/log/samba" -DCONFIGFILE="/etc/samba/smb.conf" -DLMHOSTSFILE="/etc/samba/lmhosts" -DSWATDIR="/usr/share/swat" -DSBINDIR="/usr/sbin" -DLOCKDIR="/var/cache/samba" -DCODEPAGEDIR="/etc/codepages" -DDRIVERFILE="/etc/samba/printers.def" -DBINDIR="/usr/bin" -DPIDDIR="/var/run/samba" -DLIBDIR="/usr/lib" -DHAVE_INCLUDES_H -DPASSWD_PROGRAM="/usr/bin/passwd" -DSMB_PASSWD_FILE="/etc/samba/smbpasswd" -DTDB_PASSWD_FILE="/etc/samba/smbpasswd.tdb"
[...]
Installazione
[root@SATURNO source]# make install
[...]
INSTALLAZIONE TRAMITE RPM
L'installazione completa di samba via rpm richiede più package scaricabili da repository come http://www.rpmfind.net oppure nel caso di Redhat ci si può appoggiare anche al suo repository di errata.
Supponiamo di aver scaricato i seguenti RPM:
Package principale contenente documentazione, manuali e binari per attivare il servizio.
samba-2.2.7-4.8.0.i386.rpm
Package contenente le utility e relativi manuali per il mounting delle share
samba-client-2.2.7-4.8.0.i386.rpm
Package contenente file di necessari sia al client che al server come l'utility smbpasswd o le code pages
samba-common-2.2.7-4.8.0.i386.rpm
Utility per la configurazione di samba via web
samba-swat-2.2.7-4.8.0.i386.rpm
Installazioe di tutti i vari rpm relativi a samba
[root@SATURNO root]# rpm -ihv samba-*.rpm
warning: samba-2.2.7-4.8.0.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:samba-common ########################################### [ 25%]
2:samba ########################################### [ 50%]
3:samba-client ########################################### [ 75%]
4:samba-swat ########################################### [100%]
Visualizzazione di ciò che i vari rpm hanno installato
[root@SATURNO root]# rpm -qil samba
[...]
File di configurazione per logrotate
/etc/logrotate.d/samba
File di configurazione per PAM
/etc/pam.d/samba
Script di gestione del servizio
/etc/rc.d/init.d/smb
File contenente la correlazione unix_name e smb_name
/etc/samba/smbusers
File contenente le opzioni passate ai vari demoni
/etc/sysconfig/samba
Uility per la creazione di file unicode per samba
/usr/bin/make_unicodemap
Script relativo alla gestione del file smbpasswd
/usr/bin/mksmbpasswd.sh
Script per la gestione degli utenti samba
/usr/bin/smbadduser
/usr/bin/smbcontrol
/usr/bin/smbstatus
/usr/bin/tdbbackup
Librerie e file header
/usr/include/libsmbclient.h
/usr/lib/libsmbclient.a
/usr/lib/samba/vfs
/usr/lib/samba/vfs/recycle.so
Binari relativi ai demoni
/usr/sbin/nmbd
/usr/sbin/smbd
Documnetazione
/usr/share/doc/samba-2.2.7
/usr/share/doc/samba-2.2.7/COPYING
/usr/share/doc/samba-2.2.7/LDAP
/usr/share/doc/samba-2.2.7/LDAP/README
/usr/share/doc/samba-2.2.7/LDAP/export_smbpasswd.pl
/usr/share/doc/samba-2.2.7/LDAP/import_smbpasswd.pl
/usr/share/doc/samba-2.2.7/LDAP/ldapchpasswd
/usr/share/doc/samba-2.2.7/LDAP/ldapsync.pl
[...]
Manuali
/usr/share/man/man1/make_unicodemap.1.gz
/usr/share/man/man1/smbcontrol.1.gz
/usr/share/man/man1/smbstatus.1.gz
/usr/share/man/man5/smbpasswd.5.gz
/usr/share/man/man7/samba.7.gz
/usr/share/man/man8/nmbd.8.gz
/usr/share/man/man8/pdbedit.8.gz
/usr/share/man/man8/smbd.8.gz
Directory di appoggio
/var/cache/samba
/var/log/samba
/var/run/samba
/var/spool/samba
[root@SATURNO root]# rpm -qil samba-common
[...]
Script di gestione del demone windbind
/etc/rc.d/init.d/winbind
File di configurazione
/etc/samba
/etc/samba/lmhosts
/etc/samba/smb.conf
Librerie dinamiche
/lib/libnss_winbind.so
/lib/libnss_winbind.so.2
/lib/libnss_wins.so
/lib/libnss_wins.so.2
/lib/security/pam_winbind.so
utility e binari di vario genere per l'amministrazione del servizio e degli utenti di samba
/usr/bin/make_printerdef
/usr/bin/make_smbcodepage
/usr/bin/smbpasswd
/usr/bin/testparm
/usr/bin/testprns
/usr/bin/wbinfo
/usr/sbin/winbindd
Manuali
/usr/share/man/man1/make_smbcodepage.1.gz
/usr/share/man/man1/testparm.1.gz
/usr/share/man/man1/testprns.1.gz
/usr/share/man/man1/wbinfo.1.gz
/usr/share/man/man5/lmhosts.5.gz
/usr/share/man/man5/smb.conf.5.gz
/usr/share/man/man8/smbpasswd.8.gz
/usr/share/man/man8/winbindd.8.gz
Directory contenente i codepages
/usr/share/samba
/usr/share/samba/codepages
[...]
[root@SATURNO root]# rpm -qil samba-client
[...]
links a /usr/bin/smbmount,binario per il mounting delle share
/sbin/mount.smb
/sbin/mount.smbfs
Utility per l'interrogazione del server smb e per il mountig delle share
/usr/bin/nmblookup
/usr/bin/rpcclient
/usr/bin/smbcacls
/usr/bin/smbclient
/usr/bin/smbmnt
/usr/bin/smbmount
/usr/bin/smbprint
/usr/bin/smbspool
/usr/bin/smbtar
/usr/bin/smbumount
Manuali
/usr/share/man/man1/nmblookup.1.gz
/usr/share/man/man1/rpcclient.1.gz
/usr/share/man/man1/smbcacls.1.gz
/usr/share/man/man1/smbclient.1.gz
/usr/share/man/man1/smbtar.1.gz
/usr/share/man/man8/smbmnt.8.gz
/usr/share/man/man8/smbmount.8.gz
/usr/share/man/man8/smbspool.8.gz
/usr/share/man/man8/smbumount.8.gz
Per la gestione del servizio ci si può appoggiare allo script: /etc/init.d/smb, specificando come parametro l'azione da eseguire, esempio start, stop o restart.
Opzioni disponibili:
- start : Avvia il servizio smb
- stop : killa i processi smb
- restart : Esegue in successione stop e start
- reload : esegue il reload del file di configurazione
- status : visualizza lo status dei demoni
- condrestart : Esegue il restart del servizio
Per richiamare le singole opzioni utilizzabili lanciare lo script senza argomenti
[root@SATURNO root]# /etc/init.d/smb
Usage: /etc/init.d/smb {start|stop|restart|reload|status|condrestart}
Esempi di avvio, restart e stop
[root@SATURNO root]# /etc/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@SATURNO root]# /etc/init.d/smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@SATURNO root]# /etc/init.d/smb stop
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
La suite Samba risulta essere veramente ricca di tools e script per la configurazione gestione e uso dei suoi servizi, uno di questi è molto utile per verificare prima di lanciare il demone che tutto sia a posto all'interno del file di configurazione.
testparm esegue un controllo sul file di configurazione specificato che per default, se si è installato dai sorgenti è dir_samba/lib/smb.conf
, dopo di che se è tutto ok stampa a monitor "Loaded services file OK." più qualche informazione ulteriore e dopo aver premuto [enter] mostra tutti i settaggi e come sono configurati.
La sua sintassi:
testparm [opzioni] path_file_conf [hostname indirizzo_IP]
Per l'ultimo campo quando si specifica l'hostname va sempre specificato anche l'indirizzo IP e in questo modo si effettua una verifica dei parametri host allow
e host deny
nel smb.conf per verificare che il dato host abbia accesso al server Samba.
Le opzioni sono:
-h
: Per avere in output un brief delle opzioni e della sintassi.
-L nome_server
: Per modificare il valore della macro %L nel valore nome_server.
-s
: Fa in modo che non faccia premere all'utente il tasto [enter] per avere il dump dei settaggi.
nmblookup è un'utility che permette la risoluzione dei nomi NetBIOS in indirizzi IP.
Il comando permette di effettuare richieste di nomi NetBIOS per la loro risoluzione in indirizzi IP usando NetBIOS over TCP/IP.
Le sue opzioni gli permettono di effettuare query dirette ad una particolare area broadcast o ad una macchina specifica. Tutte le richieste vengono inoltrate usando UDP.
Un po come nslookup è utile per recuperare informazioni su una rete NetBIOS dai semplici indirizzi a informazioni particolari come __MSBROWSE__ usate dai servizi dei nomi di Windows per fornire servizi di directory.
La sua sintassi è:
nmblookup [-opzioni] nome
Supporta varie opzioni che ne regolano il comportamento:
-A
: Interpreta un nome come un indirizzo IP e segue una richiesta node-status su quell'indrizzo.
-B indirizzo_broadcast
: Invia le richieste ad un particolare indirizzo broadcast. Il suo default è di utilizzare il valore di broadcast dell'interfaccia di rete primaria oppure come definito dal parametro interfaces
del smb.conf.
-h
: Stampa a monitor un breve brief dei comandi.
-M
: Effettua la ricerca del master browser locale. Viene eseguita una richiesta broadcast delle macchine che rispondono al nome speciale __MSBROWSE__ e poi chiede le informazioni a quella macchina al posto di effettuare un richiesta broadcast per la macchina cercata.
-R
: Abilita le richieste ricorsive. Si usa per effettuare richieste ad un WINS server.
-S
: Una volta ricavato l'indirizzo IP del nome richiesto effettua una richiesta node-status restituendo tutti i tipi di risorsa che la macchina ha e il loro valore numerico.
-s
: Permette di specificare il file di configurazione smb.conf da utilizzare.
-U indirizzo_unicast
: Effettua un richiesta unicast all'indirizzo specificato, si usa insieme all'opzione -R per fare richieste a server WINS sulla rete locale.
Vediamo l'otput di un node-status:
bash-2.05a$ nmblookup -A 192.168.0.1
Looking up status of 192.168.0.1
SMBSRV <00> - B
SMBSRV <03> - B
SMBSRV <20> - B
WORKGROUP <00> -
WORKGROUP <1e> -
__MSBROWSE__ <01> -
Abbiamo visto che anche con smbclient si possono gestire i back-up di risorse condivise ma nella suite Samba esiste un comando prettamente dedicato a questo lavoro, smbtar.
In realtà smbtar è uno shell script che gira sopra smbclient e permette di eseguire back-ups e restores usando opzioni più comprensibili. Le sue funzionalità sono simili a quelle del comando unix tar.
Supporta svariate opzioni, vediamone alcune delle principali, consiglio comunque di dare sempre un'occhiata alla relativa pagina di man per un prospetto completo.
-d directory
: Passa alla directory specificata prima di eseguire il backup o il restore dei file.
-N nomefile
: Esegue il backup solo dei file più recenti dell'ultima modifica al file specificato. Utile per i backup incrementali (vedi man).
-p password
: Indica la password da utilizzare per accedere alla risorsa condivisa.
-r
: Esegue il restore della risorsa condivisa dal file .tar specificato.
-s nomeserver
: Indica il nome della macchina che serve la risorsa condivisa interessata.
-t nastro
: Può essere una device, un'unità nastro o un file. Se non definito il default è la variabile di ambiente $TAPE e se non esiste il file tar.out.
-u utente
: Indica l'utente con il quale si desidera connettersi alla risorsa condivisa. Si può specificare anche la password nella forma nomeutente%password.
-x risorsacondivisa
: Permette di specificare il nome della risorsa condivisa a cui si desidera accedere. Di default usa backup che è un nome comune per risorse dedicate al backup e al restore.
Vediamo un esempio dell'uso del comando:
smbtar -s nomepc -x nomeshare -u nomeutente -p password -t backup.tar
Ci sono diversi modi di accedere a risorse condivise con SMB e uno di questi è usare smbclient. Il suo uso non si discosta molto dall'usare un normale client ftp fuorchè il fatto che utilizza un diverso protocollo.
Questo comando è considerato tra i più usati della suite Samba. Non solo è una comoda utility per trasferire files da e verso risorse Samba ma ne permette anche l'archiviazione, è utile per il testing del server e per controllare quali servizi sono attivi.
La sua sintassi è:
smbclient //server/risorsa [-opzioni]
Le opzioni di smbclient sono molte, consultare la pagina man del comando per averne un prospetto completo, vediamo qui alcune delle più importanti.
-s config_file
: Permette di specificare un file di configurazione di Samba da usare.
-M NetBIOS_name
: Questa opzione permette di inviare un messaggio WinPopUp ad una macchina della rete. Una volta stabilita la connessione si digita il messaggio terminandolo con un ctrl+D
. Non c'è modo di sapere se il messaggio è arrivato a destinazione o meno e il limite dato dal protocollo è che non si superino i 1600 bytes. Può essere utile il suo uso associato a cat, ad esempio cat messaggio.txt | smbclient -M PIPPO
-n NetBIOS_name
: Con questo comando posso scegliere un nome NetBIOS a mio piacimento. Se non specificato Samba usa il nome del'host locale con lettere maiuscole.
-h
: Stampa a monitor un brief delle principali opzioni.
-I
: Permette di specificare l'indirizzo ip di una risorsa condivisa a cui si vuole accedere. In questo modo si forza il client a non cercare assolutamente di risolvere il nome della risorsa e di connettersi alla macchina specificata.
-U username[%password]
: Con questa opzione mi è possibile specificare un utente e eventualmente una password da usare per accedere a una data risorsa.
-A nome_del_file
: Questa opzione può essere utilizzata al posto di quella appena vista e permette di specificare un file da cui attingere lo USER e la PASSWD. E' stata studiata principalmente per l'uso negli script. Si può specificare anche il nome del dominio. La sintassi è:
username = valore
password = valore
domain = valore
-L
: Questa opzione è utile in fase di testing e permette di listare tutte le risorse condivise di un dato host.
-W WORKGROUP
: Questa opzione può essere necessaria per collegarsi ad alcuni server e permette di specificare un diverso WORKGROUP (dominio) da quello specificato nel smb.conf per la connessione in oggetto.
-T opzioni_di_tar
: Questa opzione permette di lavorare sui file di una risorsa per scopi di backup e di restore. Ha numerose sotto-opzioni, fare riferimento alle pagine man di smbclient per un prospetto completo. Vediamo un esempio di sintassi:
smbclient //server/nome_risorsa -Tsotto-opzioni
Le sotto-opzioni sono quasi complementari a quelle che usa il comando tar originale.
c
: Crea un nuovo archivio tar. Va seguito poi il nome dell'archivio.
x
: Estrae i file da un archivio.
N
: Sta per "newer than". Permette di archiviare solo i file più nuovi di un file che si specifica.
Quando si lancia senza paramentri smbclient si comporta come un client ftp da riga di comando e ci presenta un prompt così:
smb:\
In modalità interattiva si possono eseguire numerose operazioni, vediamone alcune:
?
: Questo comando stampa un lista informativa dei comandi e ne descrive brevemente il significato. Si può farlo seguire da il nome di un comando e stamperà una descrizione della sua funzione. Si può usare anche help
.
!
: Apre una shell sulla macchina locale. Si può farlo seguire dal comando che si vuole eseguire.
cancel id_stampa
: Permette di cancellare un job di stampa dalla coda sulla stampante. Va specificato il numero di job che si intende eliminare.
cd directory
: Permette di cambiare directory. Se usato senza specificare il path si comporta come pwd
mostrando la directory corrente.
del stringa
: Cancella dal server tutti i file della directory corrente che hanno una corrispondenza della stringa.
dir stringa
: Una lista di file contenenti la data stringa presenti nella directory di lavoro viene recuperata e mostrata.
exit
: Termina la connessione con il server e esce.
get file_remoto nome_file_locale
: Recupera un file definito e lo salva in locale con il nome specificato.
lcd directory
: Cambia la directory locale. Anche qui se non specificata la directory stampa il path della directory locale corrente.
ls stringa
: uguale a dir
.
mget stringa
: Permette di scaricare più di un singolo file o directory.
md
o mkdir
nome_directory: Crea una directory all'interno di quella attuale.
mput stringa
: Permette di mandare in upload più file o directory che hanno in comune la stringa specificata
print nome_file_stampa
: Stampa attraverso una stampante condivisa il file specificato.
put nome_file_locale nome_file_remoto
: Esegue l'upload di un file locale e se specificato lo rinomina nel nome dato.
queue
: Mostra la lista dei file in attesa di stampa.
rm stringa
: Rimuove tutti i file che hanno corrispondenza con la stringa data.
rmdir nome_directory
:rimuove la directory specificata.
tar
: Oltre all'uso dell'opzione -T in modo interattivo si usa questo comando. Supporta le stesse opzioni di -T.
Se una volta configurato il server Samba si desidera accedere alle risorse condivise come se fossero parte del filesystem Unix e non come se si accedesse ad una risorsa esterna, ad esempio usando smbclient, si dovrà "montare" la risorsa così come si montano le diverse partizioni del disco.
In questo modo sarà possibile eseguire operazioni sui file condivisi da una macchina Windows ad esempio come se si trattasse di file unix e quindi usando tutti i fantastici e versatilissimi comandi unix, grep, sort, df, du, ls, etc... etc.
Per far questo si utilizzano alcune utility fornite con il pacchetto Samba.
Smbmount, ristretta esclusivamente ai sistemi Linux è equivalente a usare il comando mount -t smbfs
. Per utilizzarla è necessario aver compilato i sorgenti assicurandosi che nel configure si sia abilitata l'opzione --with-smbmount
e bisogna accertarsi che il kernel abbia abilitato il supporto per il filesystem smb/cifs.
Smbmount è un demone e quindi una volta lanciato anche se si è smontata la risorsa continuerà ad essere attivo tra i processi listabili con un ps
o con top
. Per eseguire le operazioni si avvale del comando smbmnt.
Vediamo la sintassi e le opzioni possibili.
smbmount servizio punto_di_mount [ -o opzioni ]
Le opzioni si specificano separate con una virgola e con il modello chiave=valore, le più importanti sono:
username=arg
: Permette di specificare un utente con il quale accedere alla risorsa. Se non specificato verrà utilizzato l'utente dato dalle variabili di ambiente. Supporta anche l'uso di sintassi come user%password o user/workgroup o anche user/workgroup%password.
password=arg
: Permette di specificare una password. Se non definita si userà la variabile di ambiente PASSWD e se non trova nessuna password che vada bene, a meno che non si sia definita l'opzione guest, ci restituirà un prompt per digitarla.
credentials=nome_del_file
: Permette di definire un file esterno per la specifica dell'utente e della password. La sintassi del file sarà:
username = valore
password = valore
In questo modo si può evitare di avere queste specifiche in file condivisi da altri utenti nel sistema come /etc/fstab
.
netbiosname=arg
: Permette di specificare un nome netbios per la sorgente. Se non specificato viene usato il nome dell'host locale.
uid=arg
: Permette di specificare un utente che sarà proprietario per tutti i file presenti nella risorsa, si può specificare usando l'id numerico per l'utente o il suo nome.
gid=arg
: Permette di specificare il gruppo propietario per tutti i file della risorsa montata. Si può definire per id o per nome.
port=arg
: Specifica una porta diversa dalla standard 139 per comunicare con la risorsa remota.
fmask=arg
: Definisce i permessi dei file della risorsa montata. Se non specificato si usa la umask corrente.
dmask=arg
: Come sopra ma per le directory.
debug=arg
: Permette la specifica per il debug delle operazioni che si effettuano. Un valore consigliato può essere 4, se si specifica un valore troppo alto si rischia di avere troppi messaggi che impediscono poi la visualizzazione dei dati interessanti.
ip=arg
: Setta l'ip o il nome dell'host remoto a cui ci si vuole connettere.
workgroup=arg
: Permette di specificare il workgroup a cui si riferisce la risorsa condivisa da montare.
guest
: Non richiede una password.
rw
: Monta la risorsa in read and write mode.
ro
: Monta la risorsa in read-only mode
Una volta montata la risorsa la si può smontare con l'equivalente di umount, smbumount. Per la verità si è pensato a questo eseguibile per dare ai normali utenti più versatilità sulle risorse montate. Infatti questo comando è setuid ed è immaginabile che mettere setuid umount sia una cosa da pazzi. Root potrà comunque smontare le risorse con umount.
Non ha opzioni e la sua sintassi è:
smbumount punto_di_mount
I comandi appena descritti valgono per l'uso su sistemi Linux ma se si sta usando Solaris? O HP-UX?
Per questo è stato studiato un'altro metodo che, purtroppo ancora imperfetto e in via di sviluppo, permette di effettuare operazioni sui file di risorse condivise senza avere un supporto smbfs. Si abilita il suo uso in fase di compilazione dei sorgenti con l'opzione, da passare al configure
, --with-smbwrapper
e si utilizza per le operazioni l'eseguibile smbsh.
Smbsh quando lanciato fornisce un albero di directory sotto /smb
. Le sotto directory di /smb
corrispondono ai server e le loro sottodirectory agli share su disco e di stampa. Crea di fatto una subshell e i comandi impartiti dal suo prompt interagiscono con i file come se si trattassero di file locali al sistema unix della macchina.
Ha varie opzioni:
-d
: Setta il livello di debug dell'applicazione e quindi anche di log, i suoi valori vanno da 0 a 10. Il livello 0 registra solo i messaggi più importanti, l'uno è normale e da 3 in su è inteso solo per il debug visto il forte carico di lavoro a cui sottopone Samba.
-l file
: Imposta il nome del file di log da usare.
-P prefisso
: Imposta una divesa directory da /smb
su cui montare il filesystem SMB.
-R ordine
: Imposta l'ordine di risoluzione dei nameservers. Accetta i quattro paramentri lmhosts, host, wins e bcast in qualsiasi ordine.
-U utente
: Supporta il modo username%password
-W workgroup
: Imposta il workgroup NetBIOS al quale il client si connette.
Utility che permette di gestire (inviare comandi / messaggi ) ai demoni di smbd, nmbd e winbindd.
smbcontrol [ -d ] [ -s ] -i
oppure
smbcontrol [ -d ] [ -s ] destination message-type [ parameter ]
-d
Specifica il livello di debug (Accetta valori interi da 0 a 10)
-s
Specifica il file di configurazione
-i
Abilita l'interctive mode,
destination
Per destination si intende a quale processo dovrà essere inviato il messaggio, è possibile specificare sia l'ID oppure sia il nome: nmbd o smbd.
La differenza fra i due target nmbd e smbd oltre al nome del processo consiste nel fatto che il messaggio con destinazione nmbd viene mandato in modalità broadcast a tutti i processi nmbd attivi in quel momento mentre per smbd verrà inviato un singolo messaggio al processo con l'ID specificato nel pid file (smbd.pid)
message-type
Specifici che tipo di messaggio viene inviato. Ecco alcuni esempi:
- close-share
: Termina tutte le sessioni correnti dei client connessi alla share, come argomento si aspetta il nome della share.
- debug
: Setta il debug level
- force-election
: Forza l'elezione del master browser, unico target possibile è nmbd
- ping
: Invia dei ping ai processi evidenziati, stessa modalità dei pacchetti ICMP.
Come parametro si aspetta il numero di ping da inviare di conseguenza i PONG dei singoli processi.
- profile
: Invia un messagio ad un processo smbd per modificare i parametri del profile. I parametri possono essere settati ad on/off per attivarli o disattivarli oppure flush e count per azzerare o attivare i vari counter.
parameter
Parametri richiesti dal messaggio inviato, Es il livello di debugging o il numero di ping da inviare ad un certo processo.
Esempi:
Invio di ping ai processi nmbd
[root@trinity root]# smbcontrol smbd ping 1
PONG from PID 585
PONG from PID 30423
PONG from PID 29124
PONG from PID 29220
PONG from PID 29414
PONG from PID 29139
PONG from PID 29151
Abilitazione dell'interactive mode
[root@trinity root]# smbcontrol -i
visualizzazione dell'help
smbcontrol> ?
<destination> <message-type> <parameters>
<destination> is one of "nmbd", "smbd" or a process ID
<message-type> is one of: debug, force-election, ping, profile, profilelevel, debuglevel, printer-notify, close-share
Comando utile per debugging e gestione del servizio di smb, poichè permette di visualizzare a video un report sullo status delle connessioni.
smbstatus [opzioni] [-s configuration file] [-u username]
-s
Specifica il file di configurazione
-u
Visualizza solo le informazioni sull'utente specificato
-b
Visualizza un report minimo
-d
Visualizza un reposrt verboso
-p
Visualizza la lista dei processi smb
Visualizzazione dello status delle connessioni smb
[root@trinity root]# smbstatus
Samba version 2.2.7
Service uid gid pid machine
----------------------------------------------
nas root root 13039 castro (10.0.1.170) Fri Apr 4 10:26:33 2003
simone simone simone 12811 fox (10.0.1.163) Fri Apr 4 09:38:55 2003
fulvio fulvio fulvio 12808 yakumoscio (10.0.1.6) Fri Apr 4 09:37:55 2003
massimo massimo massimo 12803 blasco (10.0.1.18) Fri Apr 4 09:35:28 2003
IPC$ mas mas 12924 data (10.0.0.37) Fri Apr 4 09:48:48 2003
archive root root 13039 backup (10.0.1.70) Fri Apr 4 10:27:06 2003
aler aler aler 13266 jam (10.0.1.154) Fri Apr 4 11:05:53 2003
No locked files
Visualizzazione dei processi smb
[root@trinity root]# smbstatus -p
Samba version 2.2.7
Service uid gid pid machine
----------------------------------------------
13388
13039
[...]
Utility per il cambio della password di Samba.
smbpasswd [opzioni] [utente] [password]
-L
Permette di specificare le opzioni che solo l'utente root può utilizzare anche come utenti normali. Utilizzato per test o cambiamenti del file smbpasswd in locale.
-r remote hostname
Opzione che permette di specificare l'host remoto su cui cambiare la password per samba. Se si omette il valore di defaul è localhost
-t
Forza il cambiamento della password di un trusted machine account. Account creato per "registrare" la macchina nel dominio gestito dal smb server
-U username[%pass]
Opzione che permette di specificare, l'utente a cui verrà modificata la password. Opzione utilizzabile solo se affiancata all'opzione -r
-a
Opzione per aggiungere nuovi utenti nel file smbpasswd. L'utente che si vuole inserire deve già esistere come utente del sistema con la relativa entry nel file /etc/passwd
-s
Abilita il silent mode e si aspetta di leggere la nuova e vecchia password dallo standard input
-S
Permette di visualizzare il domain SID
-d
Opzione per disabilitare l'utente dal file smbpasswd in locale
-e
Opzione per abilitare l'utente dal file smbpasswd locale
-m
Opzione per specificare l'account è un account relativo ad un host
-n
Permette di settare la password a NULL
-x
Opzione che permette di cancellare l'utente dal file smbpasswd locale
-j Domain
Opzione utilizzata per registrare il server smb in un dominio NT
Nel caso in cui non venga specificato l'utente il comando interpreterà utilizzerà l'utente stesso che ha lanciato il comando per eseguire le operazioni.
Esempio:
Cambio della password dell'utente neo sul server smb trinity
[neo@dido neo]$ smbpasswd -r trinity -U neo
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user neo
Un server Samba si compone di due principali demoni:
smbd per i servizi di condivisione di file e stampanti.
nmbd per il servizio di risoluzione dei nomi NetBIOS e di assistenza al browsing delle risorse.
Entrambi questi demoni si appoggiano al file smb.conf per funzionare e hanno opzioni da riga di comando specialmente per effettuare test e debug dei rispettivi servizi.
Smbd e nmbd necessitano di essere avviati insieme per poter garantire un funzionamento corretto del server Samba. E' consigliabile infatti far gestire il loro avvio da uno script di avvio e le principali distribuzioni vengono già fornite di comodi script come /etc/init.d/samba
anche se la loro posizione varia tra le diverse distribuzioni.
In altri casi si può usare il super-demone di gestione dei servizi inetd o infine si possono avviare da riga di comando ma a patto di essere l'utente root.
smbd: Come detto questo demone è responsabile della gestione delle risorse condivise, siano esse dischi o stampanti, tra il server Samba e i suoi client. Fornisce i servizi di condivisione dei file e delle stampanti, di browsing ai client di una o più sotto-reti e di gestione di tutti i messaggi di notifica che client e server si scambiano. Infine si occupa di autenticare gli utenti e di controllare le risorse condivise.
Smbd rilegge il suo file di configurazione automaticamente ogni minuto. Si può forzare il server a rileggere il suo file di configurazione con un SIGHUP. Ricaricare il file comunque non influirà sui client già connessi i quali dovranno sconnettersi e riconnetersi perchè le modifiche abbiano effetto.
Il modo esatto di lanciarlo e con l'opzione -D
che lo porta ad avviarsi come demone. Questa è anche l'opzione di default.
Le sue opzioni a parte quella appena descritta sono finalizzate al debug e sono principalmente ad uso degli sviluppatori. Con -h
si può avere la lista di queste, per approfondirle fare riferimento alla pagina di man.
nmbd: Questo demone è in realtà un semplice name server che imita le funzionalità di un WINS o di un NetBIOS name server. Ascolta e cattura le richieste per il name server e risponde con le informazioni in suo possesso. Si occupa inoltre di mantenere una lista per il browse delle risorse di rete e partecipa alla scelta del browsing. Se attivo il server WINS nmbd tiene il database dei nomi e degli indirizzi in un file chiamato wins.dat
. Un demone nmbd può anche rispondere alle richieste del protocollo di browsing delle Risorse di Rete di Windows. Il browsing è una serie di protocolli di annuncio, annuncio di servizi o di directory condivise che fornisce una directory dinamica che contiene i server e i dischi e le stampanti presenti nella rete NetBIOS. Se nmbd è il master browser locale mantiene i databases di browsing nel file browse.dat
.
Anch'esso se lanciato con l'opzione -D
si comporta come un demone andando in background e ascoltando sulla sua porta. Il resto delle opzioni anche in questo caso serve principalmente per effettuare test particolari e verifiche per gli sviluppatori. Con l'opzione -h
se ne può avere un brief veloce.