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
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
smbnetfs: 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