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

Usando Linux como un cliente para servidores de SMB/CIFS

Además de, o en lugar de, funcionar como un servidor en una red de Windows, una computadora de Linux puede funcionar como un cliente. Puede usar un programa de tipo (ftp) para transferir archivos y modificar un servidor, o puede montar un intercambio desde una máquina de Samba o Windows Server en su computadora de Linux, dando a programas normales la habilidad de acceder a archivos directamente en el servidor. Sin embargo, al hacer esto tenga en mente las características del protocolo de SMB original y su variante de CIFS más reciente, particularmente al acceder a una máquina de Windows Server: tal vez no tenga acceso a todos los dispositivos del sistema de archivos que una computadora de Linux soporta.

Roderick W. Smith, Consultant and author

Roderick Smith author photoRoderick W. Smith es un 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 el autor del software de particionamiento GPT fdisk. Actualmente vive en Woonsocket, Rhode Island.



06-02-2012

Sobre esta serie

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

Vea nuestro roadmap de developerWorks para LPIC-3 para obtener una descripción y un enlace de cada artículo en esta serie. El roadmap está en progreso y refleja los objetivos actuales (marzo de 2011) para los exámenes de LPIC-3. A medida que cada artículo es completado, es añadido al roadmap.

En este artículo, aprenda sobre estos conceptos:

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

Este artículo le ayuda a prepararse para el Objetivo 314.1 en el Tema 312 del examen de Especialidad en Entorno Mixto de Linux Professional Institute (302). El objetivo tiene un peso de 3.

Prerrequisitos

Este artículo asume que tiene un conocimiento práctico de las funciones de línea de comandos de Linux y que entiende las bases de la configuración de Samba. Debe estar familiarizado con la estructura general del archivo de configuración smb.conf. También debe entender las bases de cómo Linux monta los sistemas de archivos local y remoto (usando el comando mount y el archivo /etc/fstab). Estar familiarizado con el comando ftp de modo de texto estándar de Linux es útil pero no necesario.


Entendiendo SMB/CIFS

Sobre el examen optativo LPI-302

Linux Professional Institute Certification (LPIC) es como muchas otras certificaciones en las que se ofrecen distintos niveles, con cada nivel requiriendo más conocimiento y experiencia que el anterior. El examen LPI-302 es un examen de especialidad optativo en el tercer nivel de la jerarquía de LPIC y requiere un nivel avanzado de conocimiento de administración de sistemas Linux.

Para obtener su certificación de LPIC-3, debe pasar los dos exámenes de primer nivel (101 y 102), los dos exámenes de segundo nivel (201 y 202) y el examen principal de LPIC-3 (301). Después de que haya obtenido este nivel, puede tomar los exámenes de especialidad optativos, tales como LPI-302.

Antes de proceder con una descripción de cómo usar Linux como un cliente para un servidor de SMB/CIFS, es útil revisar las características de los protocolos para ver cómo se comparan con necesidades de Linux para un sistema de archivos. Esta comparación viene en dos partes: una examinación del protocolo de SMB original y una investigación de las formas en las cuales las extensiones de CIFS más recientes cambian las bases de SMB. Tal vez quiera revisar el artículo de developerWorks sobre LPI Objetivo 310.1, el cual introduce algunos de los componentes básicos detrás de SMB/CIFS (vea Recursos para obtener un enlace).

Dispositivos básicos de SMB

SMB proporciona varios dispositivos exclusivos desde una perspectiva de redes, incluyendo su propio sistema de nombres para computadores (nombres de Network Basic Input/Output System [NetBIOS]), grupos de trabajo y protocolos de autenticación de usuario. Con el propósito de entender cómo SMB y CIFS trabajan como protocolos para un cliente de intercambio de archivos de Linux, el dispositivo más importante es el conjunto de metadatos que proporciona el protocolo.

Los metadatos son datos asociados con, pero no parte de, un archivo. Ejemplos incluyen la indicación de fecha y hora del archivo, su propietario, sus permisos e incluso su nombre. Sin duda está familiarizado con algunos de los dispositivos comunes de los metadatos de archivo en computadores de Linux, y tal vez esté familiarizado con algunas de las diferencias entre Linux y otros sistemas operativos, tal como Windows. Ya que SMB fue diseñado para DOS, Windows e IBM Operating System/2® (OS/2), comparte muchos de sus dispositivos de metadatos. Lo más importante, SMB carece de soporte para metadatos de UNIX® y Linux tal como la propiedad, los grupos y la mayoría de los permisos. SMB también carece de soporte para enlaces simbólicos y enlaces fijos así como otros tipos de archivos especiales tales como los nodos de dispositivo. SMB proporciona algunos tipos de metadatos que Linux normalmente no entiende, tal como los bits hidden, archive y system . Puede correlacionar un bit Read-only con el bit de permiso Write.

Construya su propio feed

Usted puede construir una alimentación RSS, Atom, o HTML personalizada por lo que se le notificará a medida se añadan nuevos artículos o se actualice el contenido. Vaya a los feeds RSS de developerWorks. Seleccione Linux para la zona y Articles para el tipo, y escriba Linux Professional Institute en las palabras claves. Después, elija su tipo de feed preferido.

Otro límite de SMB es su límite de tamaño de archivo de 2GiB. Esta limitación obviamente puede representar un problema en el mundo actual de archivos de copia de seguridad o archivos multimedia de múltiples gigabytes, entre otros.

Para trabajar alrededor de estas diferencias de SMB desde las expectativas del sistema de archivos de Linux, los clientes de SMB de Linux deben ignorarlas o proporcionar opciones para "falsificar" los datos. Estas opciones son similares a aquellas usadas al montar sistemas de archivos de NT file system (NTFS) o File Allocation Table (FAT) en Linux. Afortunadamente, CIFS proporciona más y mejores opciones para manejar algunas de estas limitaciones.

También debe estar consciente de los puertos de red que usa SMB. Estos son puertos de User Datagram Protocol (UDP) 137 y 138 (para resolución de nombre y servicios de datagrama) y puerto TCP 139 (para servicios de sesión—en otras palabras, la mayoría de las transferencias de archivos). Necesitará esta información si alguna vez tiene que depurar SMB usando herramientas de diagnóstico de red de bajo nivel.

Extensiones de CIFS para SMB

A mediados de la década de 1990, Microsoft® decidió cambiar el nombre de SMB a CIFS y simultáneamente añadió un nuevo conjunto de dispositivos. Estos dispositivos incluyen soporte para enlaces simbólicos y fijos y tamaños de archivos más grandes. CIFS también soporta el acceso al servidor en el puerto 445 además del puerto anterior, 139.

Las extensiones de otros son al menos tan importantes como las extensiones propias de Microsoft para SBM en CIFS. En particular, un conjunto de dispositivos de CIFS conocido como extensiones de UNIX proporciona soporte para propiedad del archivo, permisos y algunos otros metadatos de estilo UNIX. Si el cliente y el servidor soportan estos dispositivos, puede hacer un uso mucho más efectivo de un servidor de CIFS desde Linux del que pudo hacer un servidor que sólo soporta SMB. Como podría esperar, los sistemas operativos de Windows Server® no soportan estas extensiones, así que sólo son útiles cuando si cliente de Linux se conecta a un servidor de Samba. Este servidor también debe ser configurado con la siguiente opción global:

unix extensions = Yes

Esta opción estaba establecida en No de forma predeterminada en Samba anterior a la versión 3.0, pero Samba 3.0 conmutó el valor predeterminado a Yes, así que tal vez no necesite establecer explícitamente la opción.


Usando smbclient

En algunos aspectos, la forma más simple de acceder a un servidor de SMB/CIFS desde Linux es usar una utilidad de modo de texto conocida como smbclient. Este programa es similar al programa de cliente ftp clásico, así que si está familiarizado con ftp, no debe tener muchos problemas con smbclient. Si no está familiarizado con ftp, la idea detrás del programa es iniciar una conexión con el servidor que no involucra el montaje de intercambios en una forma tradicional. En lugar de eso, usted escribe comandos para ver, suprimir, descargar o actualizar archivos.

Para usar smbclient, usted escribe su nombre seguido del nombre de servicio, que toma la forma de //SERVER/SERVICE, tal como //TANGO/GORDON para acceder al intercambio GORDON en el servidor TANGO. Dependiendo de la configuración del servidor, probablemente se le solicitará una contraseña. Si la ingresa correctamente, podrá escribir diversos 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 utilidad para obtener más información sobre comandos más exóticos.

Tabla 1: Comandos smbclient importantes
ComandoEfecto
? o helpMuestra un resumen de comandos
cdSe cambia a un nuevo directorio en el servidor
delSuprime un archivo
dir o lsMuestra los archivos en el directorio actual (o en uno que usted especifique)
exit o quitFinaliza la sesión
getTransfiere un archivo del servidor al cliente
lcdCambia el directorio en funcionamiento en e la computadora local
md o mkdirCrea un directorio en el servidor
mgetTransfiere múltiples archivos del servidor al cliente
moreMuestra un archivo remoto usando su pager local
mputTransfiere múltiples archivos del cliente al servidor
putTransfiere un archivo del cliente al servidor
rd o rmdirSuprime un directorio
renameRenombra un archivo en el servidor
rmSuprime uno o más archivos en el servidor

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

En uso, una sesión de smbclient es probable que se parezca al Listado 1.

Listado 1. Sesión de smbclient de ejemplo
$ 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 es una excelente herramienta de depuración. Es simple y le da la habilidad de acceder a su red en una forma distinta a montar un intercambio, lo que puede ser útil si está intentando depurar un problema.


Montando intercambios de SMB/CIFS

Aunque smbclient es una herramienta útil, no le da el mismo tipo de acceso perfecto al servidor al que está acostumbrado en clientes de Windows. Si necesita dicho acceso, debe usar otras herramientas para montar los intercambios de SMB/CIFS. Puede hacer esto con el comando mount estándar de Linux; o puede editar su archivo /etc/fstab para montar automáticamente intercambios de SMB/CIFS cuando la computadora se vuelva a cargar.

Montando intercambios temporalmente

Puede montar un intercambio de SMB/CIFS usando el mismo comando mount que usa para montar volúmenes locales o exportaciones de Network File System (NFS). Puede especificar el tipo de sistema de archivos como cifs; o, en la mayoría de los casos, mount se las arregla para usar este controlador con base en la sintaxis del comando. Alternativamente, puede llamar al programa ayudante mount.cifs directamente. En principio, sólo la especificación de dispositivo es distinta de la del montaje de un sistema de archivos local; por lo tanto, para montar el intercambio GORDON del servidor TANGO, usted puede escribir, como raíz:

# mount //TANGO/GORDON /mnt

Sin embargo, en la práctica este uso tiene un problema: pasa root como el nombre de usuario al servidor. Si el servidor no permite que root inicie sesión, el intento de montaje fallará. Puede corregir este problema al usar 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 para mount, están disponibles. La Tabla 2 resume las más útiles de estas opciones. Consulte la página principal de mount.cifs para obtener información sobre opciones adicionales.

Tabla 2: Opciones importantes de mount.cifs
OpciónEfecto
user=name o username=nameEspecifica el nombre de usuario a ser enviado al servidor.
password=passEspecifica la contraseña a ser enviada al servidor. Si la contraseña no es especificada, mount.cifs usa el valor de la variable de entorno PASSWD; si eso no está establecido, el programa solicita la contraseña.
credentials=filenameEspecifica un archivo que contiene el nombre de usuario, la contraseña y, opcionalmente, el nombre del grupo de trabajo. Cada valor aparece en su propia línea, precedido de las series username=, password= y workgroup=, respectivamente.
uid=UIDEstablece el ID de usuario (UID) del usuario que debe poseer los archivos montados del intercambio.
gid=GIDSimilar a la opción uid=UID , pero afecta el ID de grupo (GID) en lugar del UID.
file_mode=modeEstablece el modo de archivo (permisos), en forma numérica, a ser asignado a los archivos del servidor.
dir_mode=modeSimilar a file_mode=mode, pero afecta a directorios en lugar de a archivos.
guestEvita la solicitud de una contraseña. Esta opción normalmente funciona sólo si el intercambio soporta acceso de invitado.
hardSi el servidor se vuelve inaccesible, los procesos que intentan acceder a los archivos en el servidor se colgarán hasta que el servidor retorne.
softSi el servidor se vuelve inaccesible, los procesos que intentan acceder a archivos en el servidor recibirán mensajes de error. Este es el comportamiento predeterminado.

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

Con el intercambio de SMB/CIFS montado, puede accederlo en la misma forma en que lo haría en un volumen local o en un volumen de NFS. Puede copiar archivos con cp, suprimir archivos con rm, editar archivos directamente con editores de texto u otros programas, etc. Tenga en mente, sin embargo, que si el servidor no soporta un dispositivo, tal vez no pueda usarlo. Por ejemplo, no puede usar chmod para cambiar el modo de un archivo a menos que el servidor soporte las extensiones de UNIX. (Una excepción parcial en el caso de chmod es que puede cambiar los permisos de Write; estos están correlacionados, en forma inversa, con el bit Read-only de SMB.)

Cuando haya terminado de usar un intercambio, puede desmontarlo con el comando umount , justo como si fuera un sistema de archivos local:

# umount /mnt

Montando un intercambio usando SMB

Hasta el kernel 2.6.37, el kernel Linux incluyó controladores de SMB y CIFS separados; usted podía montar un intercambio usando los protocolos originales de SMB al especificar un tipo de sistema de archivos de smbfs o al usar el programa smbmount . Usar este dispositivo generalmente funcionaba de la misma forma que usar el código de escritura de sistema de archivos cifs o el programa mount.cifs , aunque algunos detalles eran distintos. Usar el protocolo de SMB hizo imposible usar dispositivos exclusivos de CIFS, tal como las extensiones de UNIX de CIFS.

En el pasado, usar SMB algunas veces tenía sentido; por ejemplo, era posible montar intercambios exportados por computadores muy antiguos de Microsoft Windows 9x/Me usando el controlador smbfs de Linux, pero no usando cifs. Actualmente, estos problemas son raros, ya que la implementación moderna de cifs ha solucionado la mayoría de las anteriores limitaciones. Sin embargo, si piensa que puede tener un problema como este, puede intentar instalar un kernel anterior a 2.6.37 y ver si el controlador smbfs soluciona sus problemas.

Montando intercambios permanentemente

Si desea que una computadora monte un intercambio de SMB/CIFS de forma permanente, puede hacerlo al añadir una entrada a /etc/fstab. Este proceso funciona de forma muy similar a cualquier otra traducción de un comando mount a una entrada de /etc/fstab. Sin embargo, una opción de la Tabla 2 merece una mención especial en este contexto: credentials. Ya que la mayoría de los servidores de SMB/CIFS usan contraseñas para la autenticación, debe almacenar permanentemente la contraseña si espera que un intercambio sea montado usando /etc/fstab. Almacenar la contraseña directamente en /etc/fstab usando la opción password es posible, pero no aconsejable; ya que /etc/fstab debe ser elegible para todos los usuarios de la computadora, una contraseña almacenada de esta manera también será legible para todos. Usar credentials le permite almacenar la contraseña en un archivo que es legible sólo para la raíz, mejorando así la seguridad de contraseña.

Una entrada funcional de /etc/password para un intercambio de 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 de la siguiente manera:

username=buuser
password=Iw2bUmS[t

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

Con esta configuración en su lugar, el intercambio //TANGO/BACKUPS debe ser montado automáticamente siempre que vuelva a cargar la computadora o escriba mount -a. Si este dispositivo no funciona, verifique que el nombre de usuario y la contraseña sean correctos, pruebe con el comando mount y realice otros procedimientos de resolución de problemas de rutina.


Avanzando

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

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=791729
ArticleTitle=Aprenda Linux, 302 (Entornos mixtos): Integración de CIFS
publish-date=02062012