This is an old revision of the document!
Table of Contents
Montare un network filesystem
Con Debian Lenny per montare automaticamente al boot un filesystem nfs o smbfs bisogna usare l'opzione _netdev in /etc/fstab
:
# <file system> <mount point> <type> <options> <dump> <pass> //WINSRV/Directory /media/directory smbfs _netdev,credentials=/etc/smbfs/winsrv_directory 0 0
Ci pensa lo script /etc/network/if-up.d/mountnfs
a fare il mount dopo che le interfacce di rete sono attive.
Smbfs, cifs, uid e gid
Se da un client Linux si monta con smbmount un filesystem Samba, molto probabilmente vengono utilizzate le CIFS Unix Extensions. Questo significa che gli UID e i GID del filesystem vengono ereditati dal server al client.
Tale comportamento non è desiderabile se il database utenti non coincide tra server e client. Purtroppo in questo caso le opzioni uid e gid di smbmount
non funzionano.
Si devono disabilitare le Unix Extensions nel client eseguendo
echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled
Per rendere resitente al reboot questa opzione si può aggiungere questo in /etc/modprobe.d/local
:
# Disable CIFS Unix Extensions after loading cifs module. install cifs \ /sbin/modprobe --ignore-install cifs $CMDLINE_OPTS; \ echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled
In alternativa si disabilitano le Unix Extensions dal server, configurando /etc/samba/smb.conf
il parametro
unix extensions = no
In questo modo è possibile controllare proprietario e permessi dei file montati via smbfs con una entry simile in /etc/fstab
:
//linux/Public /media/pub smbfs _netdev,credentials=/etc/smbfs/credentials,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 0 0
Problema filesystem NFS non montato
In una Debian Lenny il montaggio di uno share NFS è comandato da /etc/network/if-up.d/mountnfs
, questo script utilizza come meccanismo di lock la directory /var/run/network/mountnfs
. Se la directory non viene rimossa correttamente il montaggio NFS fallisce ad ogni reboot.
Si suggerisce di modificare /lib/init/bootclean.sh
aggiungendo la seguente riga alla funzione clean_run()
:
test -d /var/run/network/mountnfs && rm -rf /var/run/network/mountnfs
Ovviamente conviene mettere on-hold il pacchetto initscripts:
echo initscripts hold | dpkg --set-selections
Vedere il bug 482176.
Montare un volume CIFS da utente
ATTENZIONE a partire da Debian Squeeze l'eseguibile mount.cifs
non è più installato setuid, perché tale pratica è fortemente sconsigliata dagli autori. Quindi il montaggio da parte dell'utente non privilegiato non funziona. Probabilmente il sistema giusto è usare smbnetfs.
Se si vuole consentire ad un utente non privilegiato di montare uno share CIFS, si può aggiungere una riga del genere in /etc/fstab
:
//192.168.2.35/share /media/share cifs _netdev,noauto,user,user=cifsuser,uid=1000,gid=1000 0 0
L'opzione noauto
evita che il filesystem sia montato automaticamente al boot.
Al momento del mount, all'utente verrà chiesta la password dell'account CIFS (cifsuser nell'esempio). Le opzioni uid
e gid
forzano proprietario e gruppo di tutti gli oggetti presenti nel filesystem montato, non sono obbligatorie.
ATTENZIONE: il punto di montaggio deve appartenere all'utente che effettua il mount, altrimenti si ottiene un errore:
$ mount /media/share mount error: permission denied or not superuser and mount.cifs not installed SUID
Usare smbnetfs da utente
ATTENZIONE Il metodo gvfs (vedi avanti) è supportato da praticamente tutti gli ambienti desktop, supporta svariati protocolli oltre a SMB/CIFS e può essere usato anche da riga di comando.
Il pacchetto smbnetfs consente ad un utente non privilegiato di navigare nelle condivisioni SMB/NMB (Windows) semplicemente navigando in una directory (mounting point). Viene utilizzato fuse per consentire il montaggio in user space, l'utente deve quindi appartenere al gruppo fuse
.
Si devono fornire tre file di configurazione in $HOME/.smb/
:
smb.conf
smbnetfs.conf
smbnetfs.auth
Il primo si copia da /etc/samba/smb.conf, il secondo da /etc/smbnetfs.conf
, nel terzo mettiamo le credenziali per accedere agli share (proteggerlo con chmod 0600
, oppure tenerlo in un filesystem criptato):
auth [computer[/share]] [domain_or_workgroup/]user password
Quindi si crea un punto di montaggio e si esegue il programma:
mkdir ~/media/smb smbnetfs ~/media/smb
Per usare uno share è sufficiente cambiare directory:
cd ~/media/smb/HOST/SHARE
Per smontare il filesystem si usa fusermount
:
fusermount -u ~/media/smb
Usare gvfs da utente
Installare i pacchetti gvfs, gvfs-backends, gvfs-fuse e gvfs-bin.
L'utente deve appartenere al gruppo fuse. L'ambiente desktop esegue automaticamente gvfs-fuse-daemon
oppure lo si lancia manualmente:
/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs
Con il file manager (Nautilus, Thunar, ecc.) si può aprire la risorsa smb://username@host/share/
. Oppure si può eseguire il montaggio da riga di comando con gvfs-mount
:
gvfs-mount smb://username@host/share/
Il punto di montaggio sarà qualcosa del tipo $HOME/.gvfs/share on host
. Per smontare il device:
gvfs-mount -u smb://username@host/share/
Per smontare il virtual filesystem gvfs:
fusermount -u ~/.gvfs