smbmnt, smbmount e smbwrapper

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.

Privacy Policy