Montar DFS desde Linux

De zerutek

Saltar a: navegación, buscar
RECORDATORIO
Esto es el típico recordatorio, una anotación en un papel que siempre extravías.
Fuera de su contexto puede no tener ningún sentido.


21/06/2012

Montar DFS desde Linux

En algunos momentos nos puede interesar montar recursos DFS de Microsoft desde Linux. A continuación un simple ejemplo utilizando autenticación por usuario/contraseña. Se puede realizar la autenticación por medio de Kerberos, algo fuera del ámbito de este escrito.

Sistemas utilizados

Debian Squeeze

Red Hat 6

Requerimientos

cifs-utils

Configuración

El fichero de credenciales

Hay que generar un fichero de credenciales (cuidado con los permisos) con el usuario, dominio y contraseña:

  • /etc/zerutek.credentials
username=zerutek
domain=ZERUTEK
password=ContraseÑaMuyMuySecreta

/etc/request-key.conf

Para montar DFS, mount.cifs necesita utilizar la utilidad cifs.upcall, básicamente para labores de autenticación.

Para que la utilidad cifs.upcall funcione correctamente, hay que añadir las siguientes líneas al fichero /etc/request-key.conf:

create	cifs.spnego	*	*		/usr/sbin/cifs.upcall -c %k
create	dns_resolver	*	*		/usr/sbin/cifs.upcall %k

/etc/fstab

//zerutek.svs.local/software /srv/zerutek cifs credentials=/etc/zerutek.credentials 0 0
En caso de tener IPes filtradas

Puede suceder que no tengamos acceso a los Controladores de dominio, y que sólo tengamos acceso a las máquinas que sirven el DFS. Para lograr el montaje hay que indicar las IPes de los objetivos:

//zerutek.svs.local/software /srv/zerutek cifs credentials=/etc/zerutek.credentials,ip=192.168.13.20,ip=192.168.13.22 0 0
Si tenemos espacios en los nombres

Podemos encontrarnos con nombres de "shares" con espacios en los mismos. Para lograr utilizarlos hay que sustituirlos por \040:

//zerutek.svs.local/software\040linux /srv/zerutek cifs credentials=/etc/zerutek.credentials,ip=192.168.13.20,ip=192.168.13.22 0 0

Utilizando smbclient

Si sólo deseamos un acceso puntual a los recursos, se puede usar el cliente smbclient.

  • Éste se puede utilizar en modo interactivo, a modo de cliente ftp:
smbclient -I 192.168.13.20 -I 192.168.13.22 -A /etc/zerutek.credentials //zerutek.svs.local/software
Domain=[ZERUTEK] OS=[Windows Server 2008 R2 Enterprise 7601 Service Pack 1] Server=[Windows Server 2008 R2 Enterprise 6.1]
smb: \> 
  • O indicándole los comandos a realizar con el parámetro -c. En el ejemplo, recogiendo el fichero samba-client-3.0.33-3.39.el5_8.x86_64.rpm del directorio samba:
smbclient -I 192.168.13.20 -I 192.168.13.22 -A /etc/zerutek.credentials //zerutek.svs.local/software -c "cd samba;get samba-client-3.0.33-3.39.el5_8.x86_64.rpm"
Domain=[ZERUTEK] OS=[Windows Server 2008 R2 Enterprise 7601 Service Pack 1] Server=[Windows Server 2008 R2 Enterprise 6.1]
getting file \samba\samba-client-3.0.33-3.39.el5_8.x86_64.rpm of size 6014518 as samba-client-3.0.33-3.39.el5_8.x86_64.rpm (100054,7 KiloBytes/sec) (average 100054,7 KiloBytes/sec)

Sobre las passwords y credenciales

Si no deseamos indicar el usuario y contraseña en un fichero, pero tampoco deseamos indicarlos en la línea de comandos, podemos utilizar las varibles siguientes:

  • USER El usuario a utilizar.
  • LOGNAME Si no existe la variable USER, se usa ésta, y si no el usuario GUEST
  • PASSWD La contraseña a utilizar.

Problemas detectados

  • Al parecer el cliente smbclient no soporta rutas absolutas, por lo que se deben concatenar cd y get para descargar ficheros.
  • Los espacios en las rutas con un problema, por lo que hay que utilizar las comillas de forma adecuada, "escapándolas" cuando sea necesario:
smbclient -I 192.168.13.20 -I 192.168.13.22 -A /etc/zerutek.credentials //zerutek.svs.local/software -c "cd samba;get \"Doc Samba\""

Referencias

http://en.wikipedia.org/wiki/Distributed_File_System_%28Microsoft%29