¡Hola Amigos!. “Common Internet File System utilities” o Utilidades Comunes para Sistemas de Archivos de Internet, nos servirán para montar en nuestro sistema de archivos Linux local, recursos de redes CIFS compartidos en máquinas remotas.El paquete CIFS-Utils formó parte de la Suite Samba hasta versiones anteriores a la 5.5-1 (ver /usr/share/doc/cifs-utils/README) que es la que trae el Debian 7 “Wheezy” y sobre la cual se basa éste articulo. Actualmente, las utilidades CIFS son un proyecto separado de Samba y es activamente mantenido por el Samba Team.Antes de continuar, debemos leer el artículo Samba: SmbClient pues haremos referencia a él. Prácticamente, este post es su continuación.Veremos:
- Instalación y un poco de conocimiento general
- Uso del comando mount.cifs
- Ejemplo 1
- Ejemplo 2
- Ejemplo 3
- Resumen
Instalación y un poco de conocimiento general
Si no tenemos instalado el paquete smbclient u otro relacionado con la suite Samba, al instalar cifs-utils por cualquier medio también lo harán:- keyutils: Herramientas de gestión de claves de Linux. Keyutils es un conjunto de herramientas para gestionar la retención de claves en el núcleo que se pueden usar en sistemas de archivos, dispositivos de bloques y otros, para obtener y retener la autorización y las claves de cifrado necesarias para realizar operaciones seguras.
- winbind: Demonio que integra la Autenticación y los mecanismos de búsqueda de usuarios y/o grupos desde un Directorio Activo hacia un sistema Linux.
- libnss-winbind: Paquete que nos da el plugin nss_winbind, el cual se integra con el servidor local Winbind para proveer la búsqueda de nombres de usuarios y grupos. También nos brinda el plugin nss_wins, el cual provee la búsqueda de nombres de hosts o equipos, tanto por medio de los protocolos NBNS (“NetBIOS Name Service”) y NetBIOS broadcast.
- samba-common y samba-common-bin: Tratados en el post Samba: SmbClient en éste mismo sitio.
Uso del comando mount.cifs
De forma general lo invocamos como:mount.cifs {servicio} {punto de montaje} [-o opciones]mount.cifs monta un sistema de archivos CIFS Linux. Es un comando nativo de Linux y el núcleo o kernel debe tener el soporte para sistemas de archivos cifs. El protocolo CIFS es el sucesor del protocolo SMB y tiene soporte en la mayoría de los servidores Windows y en muchos otros servidores comerciales y equipos NAS “Network Attached Storage”. Por supuesto que tiene soporte total por parte del servidor Samba, de código abierto.Esta utilidad adjunta o monta el recurso de red compartido (o exportado) en un servidor remoto el cual se especifica como servicio utilizando la sintaxis//servidor/recurso -donde “servidor” es el nombre o la dirección IP en el cual reside el recurso compartido y “recurso” es el nombre del recurso compartido- a un directorio local que será el “punto de montaje”. El Punto de Montaje debe existir en nuestro sistema de archivos local ANTES de montar el recurso.Las Opciones del comando se conforman a partir de una lista de pares de valores separados por coma, tipos clave=valor.Para facilitar el trabajo con ésta utilidad, recomendamos se realicen los cambios indicados en el post Samba: SmbClient al archivo /etc/samba/smb.conf tomando como referencia el equipo miwheezy.amigos.cu el cual no está unido al dominio. También es recomendable instalar el paquete smbclient si aun no lo está, para conocer de forma rápida cuales son los recursos compartidos en la red. Claro que lo anterior, lo podemos determinar mediante el Nautilus o el navegador de archivos que estemos usando, siempre que tenga soporte para el protocolo SMB/CIFS.
mount -t cifs {servicio} {punto de montaje} [-o opciones]
Ejemplo 1
Queremos montar el recurso compartido //w2003/tierramedia en la carpeta local /home/xeon/lan con las credenciales del usuario pipin perteneciente al dominioamigos.cu. Como el usuario root o mediante sudo ejecutamos:xeon@miwheezy:~$ sudo mount.cifs //w2003/tierramedia /home/xeon/lan -o user=Observemos que primero se nos pide la contraseña del usuario local xeon@miwheezy, y luego la del usuario remoto pipin@amigos.cu. Por supuesto que debemos conocerla a menos que tengamos nuestro equipo unido al dominio y hayamos iniciado sesión local en nuestro Debian como pipin. Ese caso lo veremos en artículos posteriores.También debemos haber creado la carpeta lan (/home/xeon/lan) antes de invocar el comando. Sino, podemos indicar que el punto de montaje será el directorio/mnt, si es que no tenemos montado algún otro recurso en ese directorio genérico.Seamos curiosos y listemos los archivos del directorio local donde tenemos montado el recurso compartido remoto y veremos que el usuario y el grupo propietarios de las carpetas y archivos es root. Significa que sólo tendremos acceso de lectura. Compruébenlo.Para algunos será un poco difícil de entender lo anterior, pero son precisamente éstos detalles los que resaltan la Potencia y Seguridad de un sistema de archivos UNIX/Linux.
pipin@amigos.cu
[sudo] password for xeon:
Password:
- Hemos sido capaces de insertar dentro de nuestra estructura jerárquica de archivos que nace en /, un sistema de ficheros que no es ext3 o ext4, tal y como sucede cuando montamos un sistema de archivos NTFS, FAT, o FAT32 en nuestro equipo con Debian. Operaciones normales que hacemos sin observar su esencia.
- Después de montado el recurso remoto, podemos tratar a sus carpetas y ficheros como locales.
- No se requiere de una letra ni nada por el estilo para hacer referencia al recurso remoto.
- No necesitamos tener nuestro Linux unido a un Dominio Windows. Sólo necesitamos una cuenta de usuario en ese Dominio para acceder a recursos compartidos en los cuales tenga permisos nuestro usuario. Ésto también se puede hacer desde un cliente Windows. Ok?.
Ejemplo 2
Queremos montar el recurso compartido //w2003/tierramedia en la carpeta local /home/xeon/lan con las credenciales del usuario pipin perteneciente al dominioamigos.cu. También necesitamos acceder a los archivos con permisos de lectura/escritura y que el propietario sea el usuario local mediante el cual hemos iniciado sesión y que en nuestro ejemplo es xeon:xeon@miwheezy:~$ sudo mount.cifs //w2003.amigos.cu/tierramedia /home/xeon/lan -o user=pipin,uid=xeon,forceuidSeamos nuevamente curiosos y listemos la carpeta lan. Ahora el propietario es xeon y el grupo sigue siendo root. No necesitamos indicarle al mount.cifs la opciónrw para tener acceso de lectura/escritura. Los permisos inherentes a un sistema de archivos UNIX/Linux lo garantizan. Lo podemos comprobar creando y borrando directorios; modificando archivos existentes, etcétera.
Ejemplo 3
Cada vez que se inicie nuestro equipo local, queremos montar el recurso compartido //w2003/tierramedia en la carpeta local /home/xeon/lan con las credenciales del usuario pipin perteneciente al dominio amigos.cu. También necesitamos acceder a los archivos con permisos de lectura/escritura y que el propietario sea el usuario local mediante el cual hemos iniciado sesión y que en nuestro ejemplo es xeon.Una sencilla solución es la de crear un script en el directorio /etc/init.d, darle permisos de ejecución e incluirlo entre los programas que se ejecutan al inicio. Como el usuario root ejecutamos:nano /etc/init.d/monta-tierramedia.shy añadimos el siguiente contenido al recién creado script de inicio:
#! /bin/shPosteriormente le damos permiso de ejecución al script y lo incluimos entre los scripts de inicio. Como el usuario root ejecutamos:
### BEGIN INIT INFO
# Provides: Monta el recurso remoto //w2003/tierramedia en /home/xeon/lan
# Required-Start: $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Monta recurso remoto
### END INIT INFO
mount.cifs //10.10.10.30/tierramedia /home/xeon/lan \
-o user=pipin,password=contrasena,uid=xeon,gid=xeon, \
forceuid,forcegid
chmod u+x,o-r,o-x /etc/init.d/monta-tierramedia.shSi todo lo hicimos correctamente, no debemos recibir ningún mensaje de error. Para comprobar si la sintaxis del script es la correcta, lo ejecutamos manualmente, y tampoco debemos recibir ningún mensaje de error. Como el usuario root ejecutamos:
update-rc.d monta-tierramedia.sh defaults
/etc/init.d/monta-tierramedia.sh
Resumen
Podemos escribir numerosos ejemplos, pero ese NO es nuestro objetivo. Debemos ir de lo sencillo a lo complejo y éste post es un Punto de Entrada al tema. Nuestros artículos se basan en lo fundamental en las páginas del manual o Man Pages y en la documentación acompañante de cada paquete. Tratamos de ofrecer algo diferente o que complemente a la mayoría de los artículos encontrados en la Aldea WWW.Si deseamos utilizar Software Libre sobre redes Microsoft, SMB/CIFS, y Samba, hay que al menos leer!!!. Sino, sufriremos las consecuencias del Desconocimiento Básico.Un consejo gratis: ¿Para que vamos a hacer las cosas difíciles si las podemos implementar bien fáciles?.Y por ahora, se acabó la actividad, Amigos!!!.fuente