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