Aprenda Linux, 302 (Entornos mixtos): Integración CIFS

Usando Linux como un cliente para servidores SMB/CIFS

Además de, o en lugar de funcionar como un servidor en una red Windows, una computadora Linux puede funcionar como un cliente. Usted puede usar un programa tipo ftp para transferir archivos y para modificar un servidor, o puede montar una participación de una máquina Samba o Windows Server en sua computadoraLinux, dando a los programas normales la capacidad para acceder a archivos directamente en el servidor. No obstante, cuando esté haciendo esto tenga presentes las características del protocolo SMB original y de su variante CIFS más reciente, particularmente cuando esté accediendo a una máquina Windows Server: Usted puede no tener acceso a todos los recursos del sistema de archivos que soporta una computadora Linux.

Roderick W. Smith, Consultant and author

Roderick Smith author photoRoderick W. Smith es consultor y autor de más de una docena de libros sobre UNIX y Linux, incluyendo The Definitive Guide to Samba 3, Linux in a Windows World, y Linux Professional Institute Certification Study Guide. También es autor del software de particionamiento GPT fdisk. Actualmente vive en Woonsocket, Rhode Island.



26-03-2012

Sobre esta serie

Esta serie de artículos le ayuda a aprender tareas de administración de sistemas Linux. Usted también puede usar el material en estos artículos para prepararse para los exámenes de nivel 3 Linux Professional Institute Certification (LPIC-3).

Vea nuestro mapa de ruta developerWorks para LPIC-3 para una descripción de un enlace hacia cada artículo de esta serie. El mapa de ruta está en desarrollo y refleja losobjetivos actuales (marzo del 2011) para los exámenes LPIC-3. Cada vez que se completa un artículo se añade al mapa de ruta.

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

Sobre el examen electivo LPI-302

El Linux Professional Institute Certification (LPIC) es como cualquier otra certificación en cuanto a que se ofrecen diferentes niveles, requiriendo cada nivel más conocimiento y experiencia que el nivel anterior. El examen LPI-302 es un examen especializado de tercer nivel en la jerarquía del LPIC y requiere un nivel avanzado de conocimiento en administración de sistemas Linux.

Para obtener su certificación LPIC-3, usted debe aprobar los dos primeros exámenes de primer nivel (101 y 102), los dos exámenes de segundo nivel (201 y 202), y el examen central LPIC-3 (301). Después de haber alcanzado este nivel usted puede tomas los exámenes electivos especializados LPI-302.

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.

Construya su propio feed

Usted puede construir un feed RSS, Atom, o HTML de manera que será notificado a medida que añadimos nuevos artículos o actualizamos contenido. Vaya a developerWorks RSS feeds. Seleccione Linux para la zona y Articles como el tipo, y escriba Linux Professional Institute en las palabras clave. Luego seleccione su tipo de feed preferido.

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 una participación usando SMB

Hasta kernel 2.6.37, el kernel Linux incluyó controladores SMB y CIFS separados; usted podría montar una participación usando los protocolos SMB originales especificando un tipo de sistema de archivos smbfs o usando el programa smbmount . Usar este recurso generalmente funcionó de la misma forma que el código cifs de tipo de sistema de archivos o el programa mount.cifs , aunque algunos detalles diferían. Usar el protocolo SMB hacía imposible usar recursos únicamente CIFS, como las extensiones CIFX UNIX.

En el pasado, algunas veces tenía sentido usar SMB; por ejemplo, era posible montar participaciones exportadas por computadores Microsoft Windows 9x/Me muy antiguos usando el controlador smbfs de Linux pero no usando cifs. Actualmente esos problemas son raros porque la implementación moderna de los cifs ha estado funcionando para la mayoría de sus limitaciones previas. S in embargo, si considera que puede estar teniendo ese problema, podría intentar instalar un kernel pre-2.6.37 y ver si el controlador smbfs resuelve sus problemas.

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

Aprender

Comentar

  • Participe en la Comunidad My developerWorks. Conéctese con otros usuarios developerWorks mientras explora los blogs, foros, grupos y wikis dirigidos a desarrolladores.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


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