Montar y desmontar sistemas de archivos de red CIFS y NFS

Este objetivo aunque se profundiza mas en los objetivos del examen de ingenieria RHCE, pues no esta de mas tener una idea basica de como trabajar con recursos de red como CIFS y NFS.

En el siguiente ejemplo nos enfocaremos en como montar estos recursos temporalmente y de forma automatica agregando la entrada correspondiente en el archivo fstab. No vamos a entrar en detalles de permisos, ya que vamos a suponer el servidor Samba y NFS estan correctamente configurados.

En este ejemplo vamos a utilizar nuestro servidor “labipa” el cual ya tiene configurado estos servicios para realizar nuestras practicas.

Servidor Samba (cifs): labipa.example.com 192.168.4.200
Servidor NFS: labipa.example.com 192.168.4.200

Vamos a comenzar con la demostracion de como montar sistemas de archivos cifs de forma manual y automaticamente.

Primero debemos asegurarnos de tener los paquetes correctos instalados. Si no sabemos cual vamos a necesitar podemos correr la siguiente consulta con yum:

[root@class2 ~]# yum whatprovides */samba
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
amanda-libs-3.3.3-17.el7.x86_64 : Amanda libraries
Repo : OS
Matched from:
Filename : /usr/lib64/amanda/application/amsamba

...
...

samba-client-4.4.4-9.el7.x86_64 : Samba client programs
Repo : OS
Matched from:
Filename : /usr/libexec/samba

samba-client-libs-4.4.4-9.el7.i686 : Samba client libraries
Repo : OS
Matched from:
Filename : /usr/lib/samba

samba-client-libs-4.4.4-9.el7.x86_64 : Samba client libraries
Repo : OS
Matched from:
Filename : /usr/lib64/samba

...
...

samba-common-4.4.4-9.el7.noarch : Files used by both Samba servers and clients
Repo : @anaconda/7.3
Matched from:
Filename : /etc/sysconfig/samba
Filename : /etc/logrotate.d/samba

[root@class2 ~]#

La salida de esta consulta es algo larga, pero el paquete que nos interesa en “samba-client”. Y tambien vamos a necesitar el paquete “cifs-utils”. Por lo que vamos a proceder a instalar estos dos paquetes.

[root@class2 ~]# yum install samba-client cifs-utils
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package cifs-utils.x86_64 0:6.2-9.el7 will be installed
---> Package samba-client.x86_64 0:4.4.4-9.el7 will be installed
--> Processing Dependency: samba-common-libs = 4.4.4-9.el7 for package: samba-client-4.4.4-9.el7.x86_64
--> Processing Dependency: libpopt-samba3-samba4.so(SAMBA_4.4.4)(64bit) for package: samba-client-4.4.4-9.el7.x86_64
--> Processing Dependency: libpopt-samba3-samba4.so()(64bit) for package: samba-client-4.4.4-9.el7.x86_64
--> Running transaction check
---> Package samba-common-libs.x86_64 0:4.4.4-9.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================
Installing:
cifs-utils x86_64 6.2-9.el7 OS 84 k
samba-client x86_64 4.4.4-9.el7 OS 546 k
Installing for dependencies:
samba-common-libs x86_64 4.4.4-9.el7 OS 160 k

Transaction Summary
===================================================================================================================================
Install 2 Packages (+1 Dependent package)

Total download size: 791 k
Installed size: 2.2 M
Is this ok [y/d/N]: y
Downloading packages:
-----------------------------------------------------------------------------------------------------------------------------------
Total 47 MB/

...
...
Installed:
cifs-utils.x86_64 0:6.2-9.el7 samba-client.x86_64 0:4.4.4-9.el7

Dependency Installed:
samba-common-libs.x86_64 0:4.4.4-9.el7

Complete!
[root@class2 ~]#

Ya una vez instalado los paquetes necesarios vamos a proceder a descubrir que recursos esta compartiendo el servidor labipa, estos datos pueden variar ya que depende de como este configurado. Para esto vamos a utilizar el comando “smbclient” con las opciones correctas:

[root@class2 ~]# smbclient -L labipa.example.com
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]

Sharename Type Comment
--------- ---- -------
data Disk data share
IPC$ IPC IPC Service (Samba Server Version 4.2.3)
Anonymous login successful
Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]

Server Comment
--------- -------
LABIPA Samba Server Version 4.2.3

Workgroup Master
--------- -------
MYGROUP LABIPA
[root@class2 ~]#

En esto proceso de escaneo, no tenemos que proporcionar ninguna clave, simplemente presionamos “ENTER” y el comando continua sin problemas.

En esta salida, pueden ver que el servidor esta compartiendo el recurso “data”. Este es solo el nombre, ya que en el servidor este nombre hace referencia a un direcotrio el cual no sabemos, pero si gusta puede mirar en el archivo de configuracion de Samba en “/etc/samba/smb.conf”

Ya sabiendo el nombre del recurso vamos a proceder a acceder al el utilizando el mismo comando, para esto si vamos a necesitar un usuario y clave, o tambien podemos acceder como usuario invitado; pero como les comente todo depende de como este configurado el servidor:

[root@class2 ~]# smbclient //labipa.example.com/data -U sambauser
Enter sambauser's password:
Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls
. D 0 Sun Apr 17 03:11:49 2016
.. D 0 Sun Apr 17 03:08:32 2016
sambafile1 N 0 Sun Apr 17 03:11:48 2016
sambafile2 N 0 Sun Apr 17 03:11:49 2016

10754048 blocks of size 1024. 3116668 blocks available
smb: \>

Como ven estoy accediendo al recurso compartido utilizando las credenciales del usuario “sambauser”, la clave de este usuario es “password”. De esta forma logramos acceder al sistema de archivos comnpartido via Samba.

Ahora vamos a montarlo manualmente en “/mnt/samba-manual”. Para esto vamos a crear el punto de montaje primero y despues ejecutamos el comando correcto:

[root@class2 ~]# mkdir /mnt/samba-manual
[root@class2 ~]# mount -t cifs -o username=sambauser,password=password //labipa.example.com/data /mnt/samba-manual/
[root@class2 ~]# df -h /mnt/samba-manual/
Filesystem Size Used Avail Use% Mounted on
//labipa.example.com/data 11G 7.3G 3.0G 72% /mnt/samba-manual
[root@class2 ~]#

Como ven, en el comando “mount” agregue las credenciales correctas seguido de la opcion “-o”, en este punto si usted no especifica el usuario el sistema interpreta que sera montado con las credenciales del usuario actual, el cual es root. Tambien puede solamente especificar el nombre de usuario y cuando ejecute el comando le preguntara la clave del usuario especificado, tal como muestro a continuacion:

[root@class2 ~]# umount /mnt/samba-manual/
[root@class2 ~]# df -h /mnt/samba-manual/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 5.3G 3.1G 2.3G 58% /
[root@class2 ~]# mount -t cifs -o username=sambauser //labipa.example.com/data /mnt/samba-manual/
Password for sambauser@//labipa.example.com/data: ********
[root@class2 ~]# df -h /mnt/samba-manual/
Filesystem Size Used Avail Use% Mounted on
//labipa.example.com/data 11G 7.3G 3.0G 72% /mnt/samba-manual
[root@class2 ~]#

Ambos metodos son permitodos, hasta este punto todo esta perfecto.

Ahora vamos a continuar montando este mismo recurso automaticamente en fstab. En este punto tenemos dos opciones; que el sistema nos pregunte la clave cuando inicie o que simplemente no lo haga y monter el recurso.

Para hacerlo de esta forma totalmente automatica, vamos a crear un archivo con las credenciales correctas y despues solo le cambiamos los permisos para que solo root pueda leer el archivo. Nunca esta de mas un poco de seguridad aunque estemos en un entorno de practica.

Para proceder primero vamos a crear el archivo, y despues crearemos un nuevo punto de montaje “/mnt/samba-auto” y agregaremos la entrada correspondiente en fstab.

[root@class2 ~]# cat > /root/credenciales <<EOF
> username=sambauser
> password=password
> EOF
[root@class2 ~]# ls -ls /root/credenciales
4 -rw-r--r--. 1 root root 37 Apr 25 09:04 /root/credenciales
[root@class2 ~]# chmod 400 /root/credenciales
[root@class2 ~]# ls -ls /root/credenciales
4 -r--------. 1 root root 37 Apr 25 09:04 /root/credenciales
[root@class2 ~]# mkdir /mnt/samba-auto
[root@class2 ~]# echo "//labipa.example.com/data /mnt/samba-auto cifs _netdev,credentials=/root/credenciales 0 0" >> /etc/fstab
[root@class2 ~]# mount -a
[root@class2 ~]# df -h /mnt/samba-auto/
Filesystem Size Used Avail Use% Mounted on
//labipa.example.com/data 11G 7.3G 3.0G 72% /mnt/samba-auto
[root@class2 ~]# ls -ls /mnt/samba-auto/
total 0
0 -rw-r--r--. 1 root root 0 Apr 17 2016 sambafile1
0 -rw-r--r--. 1 root root 0 Apr 17 2016 sambafile2
[root@class2 ~]#

Listo, muy simple verdad. Solo quisiera aclarar que la opcion “_netdev” se agrega cuando montamos recursos de red en fstab, de esta forma estamos diciendo que este recurso se va a montar cuando la configuracion este lista despues de cada reinicio. Es para evitar errores de montaje.

Ahora vamos a proceder con el sistema de archivos NFS, como montarlo manualmente y automaticamente.

Para el sistema de archivos NFS, tambien vamos a necesitar el paquete apropiado, el cual en este caso es “nfs-utils”. Entonces vamos a proceder a instalarlo. Es valido aclarar que vamos a utilizar un recurso NFS regular, ya que tambien podemos implementar mas seguridad con NFS+Kerberos, pero esto es tema de ingenieria.

[root@class2 ~]# yum install nfs-utils
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package 1:nfs-utils-1.3.0-0.33.el7.x86_64 already installed and latest version
Nothing to do
[root@class2 ~]#

Como ven el paquete “nfs-utils” ya esta instalado, entonces vamos aproceder a descubrir que esta exportando via NFS el servidor:

[root@class2 ~]# showmount -e labipa.example.com
Export list for labipa.example.com:
/home/ldap *
/data *
/srv/nfs *
[root@class2 ~]#

En este ejemplo vamos a trabajar con el recurso compartido “/srv/nfs”. Sabiendo esto estonces procedemos a montarlo manualmente. Pero no se olviden de crear el punto de montaje antes.

[root@class2 ~]# mkdir /mnt/nfs-manual
[root@class2 ~]# mount -t nfs labipa.example.com:/srv/nfs /mnt/nfs-manual/
[root@class2 ~]# df -h /mnt/nfs-manual/
Filesystem Size Used Avail Use% Mounted on
labipa.example.com:/srv/nfs 11G 7.3G 3.0G 72% /mnt/nfs-manual
[root@class2 ~]# ls -ls /mnt/nfs-manual/
total 0
0 -rw-r--r--. 1 root root 0 Apr 17 2016 nfsfile1
0 -rw-r--r--. 1 root root 0 Apr 17 2016 nfsfile2
[root@class2 ~]#

Noten la forma correcta de montarlo,ya que es diferente al sistema de archivos cifs. En la comprobacion pueden ver que lo hemos montado correctamente.

Ahora vamos a montar este recurso automaticamente utilizando fstab en “/mnt/nfs-auto”

[root@class2 ~]# mkdir /mnt/nfs-auto
[root@class2 ~]# echo "labipa.example.com:/srv/nfs /mnt/nfs-auto nfs _netdev 0 0" >> /etc/fstab
[root@class2 ~]# mount -a
[root@class2 ~]# df -h /mnt/nfs-auto/
Filesystem Size Used Avail Use% Mounted on
labipa.example.com:/srv/nfs 11G 7.3G 3.0G 72% /mnt/nfs-auto
[root@class2 ~]# ls -ls /mnt/nfs-auto/
total 0
0 -rw-r--r--. 1 root root 0 Apr 17 2016 nfsfile1
0 -rw-r--r--. 1 root root 0 Apr 17 2016 nfsfile2
[root@class2 ~]#

Simple verdad. Ya de esta forma tenemos nuestro sistema de archivos nfs montado automaticamente.

3 thoughts on “Montar y desmontar sistemas de archivos de red CIFS y NFS”

  1. Hola, tengo un problema ejecuto en la terminal:

    sudo mount -t cifs -o username=Xxxxxx,password=zzzzzz,vers=1.0 //192.168.1.220/Test1 /media/Contabilidad
    Todo perfecto, obtengo el recurso montado y listo para trabajar.

    La siguiente l铆nea en el fstab
    //192.168.1.220/Test1 /media/Contabilidad cifs _netdev,rw,username=Xxxxxx,password=zzzzzz,user,dir_mode=0777,file_mode=0777,vers=1.0 0 0

    No monta despu茅s de reiniciar y si ejecuto sudo mount -a da el siguiente mensaje de error
    mount: /media/Contabilidad no se puede montar //192.168.1.220/Test1 para solo lectura.

    Gracias por la ayuda

  2. Debes de verificar los permisos en el server, me refiero a la configuracion de este recurso compartido en el smb.conf. Ya que al parecer esta quejandose por las opciones que le estas pasando a la hora de montarlo.

Leave a Reply

Your email address will not be published. Required fields are marked *