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?.
- Instalar paquetes necesarios para trabajar con CIFS en Linux.
- Preparar el entorno para conexión de Linux a unidad CIFS.
- Montar unidad CIFS en equipo Linux.
- Usar un fichero de credenciales de usuario y contraseña para acceso a CIFS.
- Hacer persistente la unidad CIFS en equipo Linux desde FSTAB.
¿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
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
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:
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.
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):
Para comprobar que se ha montado correctamente el volumen ejecutaremos:
df -h
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
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:
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
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:
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