====== 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''**: # //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 **[[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482176|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 [[..:sa:cryptfs|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