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 volume CIFS da utente
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
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.
Browsing Windows Network da utente
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
):
auth [computer[/share]] [domain_or_workgroup/]user password
Quindi si crea un punto di montaggio e si esegue il programma:
mkdir /home/niccolo/media/smbnetfs smbnetfs /home/niccolo/media/smbnetfs
Per usare uno share è sufficiente cambiare directory:
cd /home/niccolo/media/smbnetfs/COMPUTER/SHARE
Per smontare il filesystem si usa fusermount
:
fusermount -u /home/niccolo/media/smbnetfs