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