Montar DFS desde Linux
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
Contents
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