User Tools

Site Tools


doc:appunti:linux:tux:netdev

This is an old revision of the document!


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

gvfs: Windows Network 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
doc/appunti/linux/tux/netdev.1322426222.txt.gz · Last modified: 2011/11/27 20:37 by niccolo