Contenido


Aprenda Linux, 302 (Entornos mixtos)

Integración CIFS

Usando Linux como un cliente para servidores SMB/CIFS

Comments

Contenido de la serie:

Este contenido es la parte # de # de la serie: Aprenda Linux, 302 (Entornos mixtos)

Manténgase en contacto por contenidos adicionales de esta serie.

Este contenido es parte de la serie:Aprenda Linux, 302 (Entornos mixtos)

Manténgase en contacto por contenidos adicionales de esta serie.

En este artículo aprenda sobre los siguientes conceptos:

  • Los protocolos Server Message Block (SMB) y Common Internet File System (CIFS)
  • Recursos y beneficios de usar CIFS
  • Montando participaciones CIFS en un cliente Linux

Este artículo le ayuda a prepararse para el Objetivo 314.1 del Tema 312 del examen especializado 302 Mixed Environment del Linux Professional Institute (LPI). El objetivo tiene un peso de 3.

Prerrequisitos

Este artículo supone que usted cuenta con conocimiento práctico de funciones de línea de comandos Linux y que usted entiende los fundamentos de la configuración Samba. Usted debe estar familiarizado(a) con la estructura general del archivo de configuración smb.conf. También debe entender los fundamentos sobre cómo Linux monta sistemas de archivos locales y remotos (usando el comando mount y el archivo /etc/fstab). Estar familiarizado con el comando Linux ftp estándar de modo de texto es útil pero no obligatorio.

Entendiendo SMB/CIFS

Antes de proceder con una descripción sobre cómo usar Linux como un cliente para un servidor SMB/CIFS, es útil revisar las características de los protocolos para ver cómo se comparan con las necesidades de Linux de un sistema de archivos. Esta comparación viene en dos partes: una revisión del protocolo SMB original y una investigación sobre las formas en que las nuevas extensiones CIFS cambian los fundamentos SMB. Es posible que desee revisar el artículo developerWorks sobre el LPI Objetivo 310.1, el cual introduce algunos de los conceptos básicos que hay detrás de SMB/CIFS (vea Recursos donde encontrará un enlace).

Características básicas SMB

SMB ofrece diversos recursos únicos desde una perspectiva de red, incluyendo su propio sistema de asignación de nombre para computadores (nombres Network Basic Input/Output System [NetBIOS]), grupos de trabajo y protocolos de autenticación de usuario. Con el propósito de entender cómo funcionan SMB y CIFX como protocolos para un cliente Linux de intercambio de archivos, el recurso más importante es el conjunto de metadatos que proporciona el protocolo.

Los metadatos son datos asociados con, pero que no son parte de un archivo. Los ejemplos incluyen la marca de tiempo del archivo, el propietario, los permisos e incluso su nombre. Sin duda usted está familiarizado(a) con algunos de los recursos comunes de metadatos de archivos en computadores Linux, y usted puede estar familiarizado con algunas de las diferencias entre Linux y otros sistemas operativos. Como SMB fue diseñado para DOS, Windows y el IBM Operating System/2® (OS/2), este comparte muchos de sus recursos de metadatos. Más importante aún, SMB carece de soporte para metadatos UNIX® y Linux como propiedad, grupos y la mayoría de los permisos. SMB también carece de soporte para enlaces simbólicos y enlaces fuertes, así como para otros tipos de archivos especiales como dispositivos de nodo. SMB proporciona nuevos tipos de metadatos que Linux normalmente no entiende, como hidden, archive, y bits desistema . Usted puede correlacionar un bit de solo lectura con el bit de permiso Linux Write.

Otra limitación de SMB es el límite de tamaño de archivo de 2GiB. Esta limitación obviamente representa un problema en el mundo de hoy de archivos de copia de seguridad multi-gigabytes, de archivos multimedia, y demás.

Para trabajar en torno a estas diferencias SMB desde las expectativas de sistema de archivos Linux, los clientes Linux SMB deben o ignorarlas o suministrar opciones para "fingir" los datos. Estas opciones son similares a las usadas cuando se montan los sistemas de archivos NT (NTFS) o File Allocation Table (FAT) en Linux. Afortunadamente, CIFS proporciona más y mejores opciones para manejar algunas de estas limitaciones.

Usted también debe tener en cuenta los puertos de red que usa SMB. Estos son los puertos User Datagram Protocol (UDP) 137 y 138 (para resolución de nombre y servicios de datagrama) y el puerto TCP 139 (para servicios de sesión—en otras palabras, la mayoría de transferencia de archivos). Usted necesitará esta información si alguna vez necesita depurar SMB usando herramientas de red de diagnóstico de bajo nivel.

Extensiones CIFS para SMB

A mediados de los años 1990, Microsoft® decidió cambiar el nombre de SMB por CIFS y de forma simultánea añadió un nuevo conjunto de recursos. Estos recursos incluyen soporte de enlaces simbólicos y fijos, y soporte de tamaños de archivo más grandes. CIFS también soporta acceso al servidor del puerto 445 además del puerto antiguo, el 139.

Tan importantes como las propias extensiones de Microsoft hacia SMB en CIFS son las extensiones de otros. En particular, un conjunto de recursos CIFS conocidos como extensiones UNIX proporciona soporte para propiedad del archivo, permisos y algunos otros metadatos de estilo UNIX. Si tanto el cliente como el servidor soportan estos recursos, usted puede hacer un uso mucho más efectivo de un servidor CIFS desde Linux del que podría con un servidor que solo soporte SMB. Como usted podría esperar, los sistemas operativos Windows Server® no soportan estas extensiones, por lo que solo son útiles cuando su cliente Linux se conecta a un servidor Samba. Este servidor también debe estar configurado con la siguiente opción global:

unix extensions = Yes

Esta opción se estableció en No de forma predeterminada en Samba antes de la versión 3.0, pero Samba 3.0 cambió el predeterminado a Yes, de manera que posiblemente usted no necesite configurar explícitamente la opción.

Usando smbclient

Con respecto a algunas cosas, la forma más simple de acceder a un servidor SMB/CIFS desde Linux es usar una herramienta de modo de texto conocida como smbclient. Este programa es similar al programa de cliente ftp clásico, de manera que si usted está familiarizado con ftp, deberá tener pocos problemas con smbclient. Si no está familiarizado con ftp, la idea que hay detrás del programa es iniciar una conexión con el servidor que no involucra montar participaciones de manera tradicional. En lugar de ello, usted escribe comandos para ver, eliminar, descargar o cargar archivos.

Para usar smbclient, usted escribe su nombre seguido por un nombre de servicio, el cual toma la forma //SERVER/SERVICE, como //TANGO/GORDON para acceder a la participación GORDON en el servidor TANGO. Dependiendo de la configuración, probablemente se le solicitará una contraseña. Si la ingresa correctamente, podrá escribir varios comandos para acceder a archivos en el servidor. La Tabla 1 resume algunos de los comandos smbclient más importantes; consulte la página principal de la herramienta para obtener información sobre comandos más exóticos.

Tabla 1: Comandos smbclient importantes
ComandoEfecto
? o helpMuestra un resumen de comandos
cdCambia el directorio en el servidor
delElimina un archivo
dir o lsMuestra los archivos en el directorio actual (o en alguno que usted especifique)
exit o quitTermina la sesión
getTransfiere un archivo desde un servidor hacia el cliente
lcdCambia el directorio de trabajo en la computadora local
md o mkdirCrea un directorio en el servidor
mgetTransfiere múltiples archivos desde el servidor hacia el cliente
moreMuestra un archivo remoto usando su paginador local
mputTransfiere múltiples archivos desde el cliente hacia el servidor
putTransfiere un archivo desde el cliente hacia el servidor
rd o rmdirElimina un directorio
renameCambia el nombre de un archivo en un servidor
rmElimina uno o más archivos de un servidor

De forma predeterminada, smbclient usa su nombre de usuario actual para conectarse al servidor; sin embargo, usted puede cambiar su nombre de usuario con la opción -U . De hecho, hay muchas otras opciones de línea de comandos disponibles, incluyendo opciones que hacen posible la transferencia de archivos sin ingresar el modo interactivo de smbclient. Por lo tanto, usted puede usar smbclient en scripts para efectuar transferencias automáticas de archivos. Consulte la página principal del programa para detalles sobre este tema.

En uso, una sesión smbclient probablemente se parecerá al Listado 1.

Listado 1. Ejemplo de sesión smbclient
$ smbclient //TANGO/GORDON/
Enter gordon's password: 
Domain=[RINGWORLD] OS=[Unix] Server=[Samba 3.4.12]
smb: \> cd mystuff
smb: \mystuff\> ls
  .                                   D        0  Mon May 16 19:20:08 2011
  ..                                  D        0  Mon May 16 19:18:12 2011
  xv-3.10a-1228.1.src.rpm                3441259  Tue May 18 19:09:26 2010
  License.txt                              27898  Mon May 16 19:17:15 2011
  xorg.conf                                 1210  Fri Jan 21 04:18:13 2011

		51198 blocks of size 2097152. 2666 blocks available
smb: \mystuff\> get xorg.conf
getting file \mystuff\xorg.conf of size 1210 as xorg.conf (9.4 KiloBytes/sec)
(average 9.4 KiloBytes/sec)
smb: \mystuff\> exit

Consejo:smbclient constituye una excelente herramienta de depuración. Es simple y le ofrece la capacidad para acceder a su red de una manera diferente al montaje de una participación, lo cual puede ser útil si usted está intentando depurar un problema.

Montando participaciones SMB/CIFS

Aunque smbclient es una herramienta útil, esta no le da el mismo tipo de acceso sin problemas al servidor al que usted está acostumbrado en clientes Windows. Si usted necesita tal acceso, debe usar otras herramientas para montar participaciones SMB/CIFS. Usted puede hacer esto con el comando mount estándar de Linux; o puede editar su archivo /etc/fstab para que monte participaciones SMB/CIFS automáticamente cuando la computadora inicie.

Montando participaciones temporalmente

usted puede montar una participación SMB/CIFS usando el mismo comando mount que usted usa para montar volúmenes locales o exportaciones Network File System (NFS). Usted puede especificar el tipo de sistema de archivos como cifs; o, en la mayoría de los casos, mount deduce el uso de este controlados con base en la sintaxis del comando. De forma alternativa, usted puede llamar al programa de ayuda mount.cifs directamente. En principio, solo la especificación de dispositivo es diferente de aquella para montar un sistema de archivos locales; así, para montar la participación GORDON desde el servidor TANGO usted podría escribir, como raíz:

# mount //TANGO/GORDON /mnt

No obstante, en la práctica este uso tiene un problema: Este pasa root como el nombre de usuario al servidor. Si el servidor no permite que la raíz inicie sesión, el intento de montaje fallará. Usted puede corregir este problema usando la opción -o user=name para pasar un nombre de usuario al servidor:

# mount -o user=gordon //TANGO/GORDON /mnt
Password:

Muchas otras opciones de montaje, pasadas con la opción -o a mount, están disponibles. La Tabla 2 resume las más útiles de estas opciones. Consulte la página principal mount.cifs para información sobre opciones adicionales.

Tabla 2: Opciones mount.cifs importantes
OpciónEfecto
user=name o username=nameEspecifica el nombre de usuario a enviar al servidor.
password=passEspecifica la contraseña a ser enviada al servidor. Si la contraseña no se especifica, mount.cifs usa el valor de la variable de entorno PASSWD; si no está establecida, el programa solicita la contraseña.
credentials=filenameEspecifica un archivo que contiene el nombre de usuario, la contraseña y opcionalmente el nombre de grupo de trabajo. Cada valor aparece en su propia línea, precedido por las cadenas de caracteres username=, password= y workgroup=, respectivamente.
uid=UIDEstablece el ID de usuario (UID) del usuario que va a ser el propietario de los archivos montados desde la participación.
gid=GIDEs similar a la opción uid=UID , pero afecta al ID de grupo (GID) en lugar de al UID.
file_mode=modeEstablece el modo de archivos (permisos), en forma numérica, a ser asignado a los archivos desde el servidor.
dir_mode=modeEs similar a file_mode=mode, pero afecta directorios en lugar de archivos.
guestEvita que se solicite una contraseña. Esta opción normalmente funciona solo si la participación soporta acceso de cliente.
hardSi el servidor se torna inaccesible, los procesos que intenten acceder a archivos en el servidor quedarán suspendidos hasta que el servidor retorne.
softSi el servidor se torna inaccesible, los procesos que intenten acceder a archivos en el servidor recibirán mensajes de error. Esta es la conducta predeterminada.

Las opciones uid, gid, file_mode y dir_mode normalmente son innecesarias si usted se conecta a un servidor que soporte las extensiones CIFS UNIX. Sin embargo, usted puede usar estos recursos para alterar los valores que el servidor proporciona en estos casos. Note también que todas estas opciones afectan la forma en que aparecen los archivos en el cliente; los permisos y la propiedad en el servidor no están afectados por estas opciones.

Con la participación SMB/CIFS montada usted puede acceder a ella tal como lo haría para un volumen local o a un volumen NFS. Usted puede copiar archivos con cp, eliminar archivos con rm, editar archivos directamente con editores de texto u otros programas, etc. No obstante, tenga presente que si el servidor no soporta un recurso, es posible que usted no pueda usarlo. Por ejemplo, usted no puede usar chmod para cambiar el modo de un archivo a menos que el servidor soporte las extensiones UNIX. (Una excepción parcial en el caso de chmod es que usted cambia permisos Write; estos están correlacionados, de forma inversa, al bit Read-only de SMB).

Cuando usted ha terminado de usar una participación, puede desmontarla con el comando umount , tal como si fuera un sistema de archivos locales:

# umount /mnt

Montando participaciones permanentemente

Si usted desea que una computadora monte una participación SMB/CIFS de forma permanente, puede hacerlo añadiendo una entrada a /etc/fstab. Este proceso funciona en gran medida como cualquier otra traducción de un comando mount hacia una entrada /etc/fstab. Sin embargo, una opción de la Tabla 2 merece ser mencionada especialmente en este contexto: credentials. Como la mayoría de los servidores SMB/CIFS usan contraseñas para autenticación, usted debe almacenar permanentemente la contraseña si espera que se monte una participación usando/etc/fstab. Almacenando la contraseña directamente en /etc/fstab usando la opción password es posible pero no se aconseja; como /etc/fstab debe poder ser leído por todos los usuarios de la computadora, una contraseña almacenada de esta forma también la podrá leer cualquier persona. Usar credentials le permite almacenar la contraseña en un archivo que solo sea legible por la raíz, mejorando así la seguridad de contraseña.

Una entrada /etc/password que funcione para una participación SMB/CIFS puede parecerse a lo siguiente:

//TANGO/BACKUPS  /saveit  cifs  credentials=/etc/samba/creds.txt  0 0

El archivo de credenciales asociado puede verse como este:

username=buuser
password=Iw2bUmS[t

Precaución: Asegúrese de dar permisos adecuados al archivo de credenciales—normalmente 0600 o 0400 con propiedad por raíz o por el usuario cuyas credenciales estén almacenadas en el archivo.

Con esta configuración en su lugar, la participación //TANGO/BACKUPS debe montarse automáticamente siempre que usted reinicie la computadora o que escriba mount -a. Si este recurso no funciona, verifique si el nombre de usuario y contraseña sean correctos, pruebe con el comando mount , y lleve a cabo otros procedimientos de rutina para solución de problemas.

Avanzando

El siguiente artículo de esta serie, "Aprenda Linux, 302 (Entornos mixtos): NetBIOS y WINS", cubre solución de nombre usando Windows Internet Name Service (WINS) y navegación, lo cual permite a los computadores ubicar participaciones de red en una jerarquía tipo árbol de computadores y participaciones.


Recursos para Descargar


Temas relacionados


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=806608
ArticleTitle=Aprenda Linux, 302 (Entornos mixtos): Integración CIFS
publish-date=03262012