Explicamos cómo montar una unidad en un equipo Linux que apunta a un recurso compartido CIFS. Lo hacemos para la distribución CentOS 7, válida para Red Hat y distribuciones similares. Mostramos cómo montar dicha unidad en Linux y cómo establecer los permisos de acceso para los usuarios Linux a dicha carpeta compartida. También indicamos cómo hacerla persistente y que se cree en el arranque del equipo de forma automática.

¿Qué es CIFS/SMB/Samba? ¿Para qué sirve?

CIFS (antiguo SMB) es un protocolo de red creado por IBM y continuado por Microsoft para compartir archivos e impresoras. Pertenece a la capa de aplicación en el modelo OSI.

Microsoft renombró, hace más de 10 años, el antiguo SMB a CIFS ( Common Internet File System) y añadió más características, que incluyen: soporte para enlaces simbólicos, enlaces duros (hard links), y mayores tamaños de archivo.

Samba es una implementación libre del protocolo SMB con las extensiones de Microsoft. Funciona sobre sistemas operativos GNU/Linux y en UNIX.

Requisitos para usar un recurso compartido CIFS en equipos Linux

En primer lugar necesitaremos tener los datos del recurso compartido CIFS:

  • Recurso compartido.
  • Usuario.
  • Contraseña.

Instalar paquetes necesarios para trabajar con CIFS en Linux

Si aún no los tenemos instalados debemos instalar «cifs-utils«, para ello ejecutamos:

yum install cifs-utils

Instalar paquetes necesarios para trabajar con CIFS en Linux

Preparar el entorno para conexión de Linux a unidad CIFS

Una vez instalado el paquete de utilidades de CIFS procederemos a configurar el sistema. En primer lugar crearemos un usuario con el UID (identificador) 500 y el nombre, por ejemplo, «usr_cifs»:

useradd -u 5000 usr_cifs

Crearemos un grupo de seguridad de Linux, por ejemplo «gr_cifs», de forma que todos los usuarios que pertenezcan a este grupo tendrán permisos de acceso a la unidad CIFS, estableceremos como identificador de grupo (GID) el valor 6000:

groupadd -g 6000 gr_cifs

Añadimos el usuario «usr_cifs» al grupo «gr_cifs»:

usermod -G gr_cifs -a usr_cifs

Añadiremos un usuario en el sistema operativo Linux, por ejemplo «cifs_prueba», para comprobar que sin ser superusuario puede acceder a la unidad CIFS:

useradd cifs_prueba

Añadiremos el usuario anterior al grupo de usuarios de CIFS, podremos añadir cualquier usuario del sistema que consideremos que tiene que tener permisos de acceso a la carpeta CIFS:

usermod -G gr_cifs -a cifs_prueba

Crearemos la carpeta CIFS, por ejemplo «unidad_cifs», esta carpeta será el punto de partida para acceso al CIFS:

mkdir /unidad_cifs

Preparar el entorno para conexión de Linux a unidad CIFS

Montar unidad CIFS en equipo Linux

Ahora podremos montar la unidad CIFS propiamente dicha, teniendo en cuenta que en el comando siguiente se introducen usuario y contraseña (se puede usar un fichero de credenciales, como veremos más adelante. También hay que tener en cuenta que el comando anterior no persistirá el montaje, es decir, si reiniciamos el equipo la unidad no volverá a montarse, indicamos cómo persistir la unidad más adelante:

mount.cifs \\\192.168.1.100\\compartida /unidad_cifs -o user=usuario_cifs,pass=»contraseña_usuario»,dir_mode=0775,file_mode=0775,uid=5000,gid=6000

o también podemos usar:

mount -t cifs -v -o username=usuario_cifs,pass=»contraseña_usuario»,dir_mode=0775,file_mode=0775,uid=5000,gid=6000 \\\192.168.1.100\\compartida /unidad_cifs

Donde:

  • 192.168.1.100 será la IP del sistema con CIFS (puede ser un nombre DNS si lo tenemos correctamente configurado en el servidor de DNS).
  • compartida: será el nombre del recurso compartido CIFS.
  • unidad_cifs: será la carpeta de Linux, creada previamente, donde se montará la unidad CIFS.
  • usuario_cifs: nombre de usuario del sistema CIFS (normalmente un usuario de dominio Active Directory de Windows donde tengamos compartido el recurso CIFS).
  • contraseña_usuario: contraseña del usuario anterior, el de Windows del sistema CIFS.
  • uid: identificador asignado al usuario de Linux que tendrá los permisos de acceso a esta unidad CIFS.
  • gid: identificador asignado al grupo de seguridad de Linux que tendrá los permisos de acceso a esta unidad CIFS. Cualquier usuario de Linux que se agregue a este grupo tendrá permisos para acceso la la carpeta compartida /unidad_cifs.
  • dir_mode y file_mode: indicamos aquí los permisos que queremos establecer para el grupo de seguridad con el gid establecido (en nuestro caso 6000).

Si todo es correcto volverá a la línea de comandos sin mostrar mensajes, salvo que hayamos indicado el parámetro -v (verbose). Con el comando:

ls -lah

Podremos ver la unidad creada y los permisos establecidos:

Montar unidad CIFS en equipo Linux

Analizando en profundidad los permisos establecidos (775) vemos que ha asignado:

  • rwx (lectura, escritura, ejecución) al usuario propietario (en nuestro caso usr_cifs con uid 5000).
  • rwx (lectura, escritura, ejecución) al grupo (en nuestro caso gr_cifs con uid 6000).
  • r-x (lectura y ejecución) al resto de usuarios.
Montar unidad CIFS en equipo Linux

Como vemos, si queremos asignar otros permisos podremos hacerlo mediante los parámetros dir_mode y file_mode.

Si se ha producido algún error (por ejemplo si el usuario o la contraseña no son correctos) lo mostrará en la línea de comandos (mount error(13): Permission denied):

Montar unidad CIFS en equipo Linux

Para comprobar que se ha montado correctamente el volumen ejecutaremos:

df -h

Montar unidad CIFS en equipo Linux

A partir de ahora podremos usar esta unidad como si se tratara de una unidad más del equipo Linux, incluso con el usuario «cifs_prueba», dado que pertenece al grupo de usuarios con permisos de lectura, escritura y ejecución sobre la unidad:

su – cifs_prueba

Accedemos a la unidad CIFS:

cd /unidad_cifs

Creamos una carpeta de prueba:

mkdir carpeta_prueba

Accedemos a la carpeta creada en el recurso CIFS:

cd carpeta_prueba

Y creamos un fichero en dicha carpeta:

nano fichero_prueba.txt

Tras guardar el contenido del fichero, hacemos un listado para comprobar que está guardado correctamente y tenemos acceso:

ls -lah

Montar unidad CIFS en equipo Linux

Usar un fichero de credenciales de usuario y contraseña para acceso a CIFS

Si no queremos introducir el usuario y contraseña en el comando podremos usar un fichero de credenciales. Crearemos este fichero previamente, por ejemplo /home/credenciales_cifs:

touch /home/credenciales_cifs

Establecemos los permisos (limitados, solo root) de acceso a este fichero:

chmod 600 /home/credenciales_cifs

Editamos el fichero:

nano /home/credenciales_cifs

Introducimos:

username=usuario_cifs
password=contraseña_usuario

Donde:

  • usuario_cifs: nombre de usuario del sistema CIFS (normalmente un usuario de dominio Active Directory de Windows donde tengamos compartido el recurso CIFS).
  • contraseña_usuario: contraseña del usuario anterior, el de Windows del sistema CIFS.

Guardamos los cambios en el fichero con Control + O y cerramos con Control + X:

Usar un fichero de credenciales de usuario y contraseña para acceso a CIFS

En el caso de usar fichero de credenciales, para montar una unidad CIFS, usaremos el comando anterior con una pequeña variación:

mount.cifs \\\192.168.1.100\\compartida /unidad_cifs -o credentials=/home/credenciales_cifs, dir_mode=0775,file_mode=0775, uid=5000,gid=6000

Hacer persistente la unidad CIFS en equipo Linux desde FSTAB

Si queremos que al iniciar el equipo se conecte automáticamente a la unidad CIFS y la monte para que esté disponible (sin tener que hacer el mount cada vez) deberemos editar el fichero /etc/fstab, con el comando:

nano /etc/fstab

Hacer persistente la unidad CIFS en equipo Linux desde FSTAB

Añadiremos una línea al final del fichero /et/fstab. Si queremos introducir el usuario y contraseña en esta línea pondremos:

//xx.xx.xx.xx/backup /unidad_cifs cifs username=xxx,password=xxx,dir_mode=0775,file_mode=0775,uid=5000,gid=6000 0 0

Donde:

  • //xx.xx.xx.xx/backup: IP o nombre DNS del servidor CIFS y nombre del recurso compartido CIFS.
  • /unidad_cifs: carpeta creada en el sistema Linux donde se montará la unidad CIFS.
  • username: nombre de usuario del recurso compartido CIFS.
  • password: contraseña del usuario anterior.
  • dir_mode, file_mode: permisos que se asignarán a la carpeta /unidad_cifs para los usuarios del equipo Linux.
  • uid: identificador único del usuario CIFS en Linux.
  • gid: identificador único del grupo de seguridad al que se le asignarán los permisos anteriores para acceso al recurso compartido CIFS desde Linux.

Y si queremos usar un fichero de credenciales, pondremos:

//xx.xx.xx.xx/backup /unidad_cifs cifs credentials=/home/credenciales_cifs, ,dir_mode=0775,file_mode=0775,uid=5000,gid=6000 0 0

Donde:

  • /home/credenciales_cifs: ubicación y nombre del fichero con las credenciales (username, password), como hemos indicado en el punto anterior.

Como vemos, son los mismos datos que hemos introducido para el montaje de la unidad con mount.

Guardaremos los cambios pulsando Control + O y cerraremos la edición pulsando Control + X.

Para comprobar que la línea está correctamente añadida, podremos montar la unidad de fstab sin necesidad de reiniciar el sistema, con el comando:

Hacer persistente la unidad CIFS en equipo Linux desde FSTAB

Si hay algún error nos lo indicará, en caso contrario volverá a la línea de comandos y ya tendremos disponible la unidad CIFS en nuestro sistema, además de que cada vez que lo reiniciemos conectará dicha unidad de forma automática.

En nuestro caso podemos reiniciar el equipo, para verificar que la conecta correctamente:

shutdown -r now

Al arrancar, iniciamos sesión y comprobamos que la unidad está conectada:

df -h

Hacer persistente la unidad CIFS en equipo Linux desde FSTAB