Contenido


Aprenda Linux, 302 (Entornos mixtos)

Integración de CIFS

Usando Linux como un cliente para servidores de 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 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

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.

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