User Tools

Site Tools


doc:appunti:linux:tux:netdev

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

Debian 9 Stretch

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

Debian 10 Buster e seguenti

Installare i pacchetti gvfs, gvfs-backends, gvfs-fuse. Per il corretto funzionamento di LibreOffice si deve installare anche il pacchetto libreoffice-gnome che consente l'apertura dei documenti direttamente da un link gvfs.

Con Debian 10 il comando gvfs-fuse-daemon è sostituito da gvfsd-fuse e il punto di montaggio delle risorse sarà sotto /run/user/UID/gvfs/.

Il processo gvfsd-fuse viene avviato automaticamente al login nell'ambiente grafico, la riga di comando è qualcosa del genere:

/usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f

Con l'opzione -o è possibile passare eventuali parametri a mount.fuse (vedi relativa manpage).

La sintassi per fare il mount manuale è:

gio mount smb://username@host/share/

Vedere man gio per eventuali parametri, ad esempio --anonymous per effettuare un montaggio anonimo senza richiesta di password.

Quando è stato fatto un montaggio gvfs dovrebbe comparire una icona sul desktop e nella directory /run/user/UID/gvfsd/ viene creato il link opportuno: tale link è visibile solo all'utente che ha fatto il mount.

È possibile passare i parametri username, workgroup e password in modo da effettuare un montaggio non interattivo con una ridirezione:

echo -e "username\nWORKGROUP\nMySecret" | gio mount smb://SERVER/SHARE

In un ambiente grafico è possibile creare un file Desktop da utilizzare come link rapido per il montaggio smb:

[Desktop Entry]
Version=1.0
Type=Link
URL=smb://10.0.0.241:/SHARE
Name=SHARE on 10.0.0.241
Icon=mate-panel-launcher
doc/appunti/linux/tux/netdev.txt · Last modified: 2023/12/20 11:33 by niccolo