Samba: SmbClient

 

¡Hola Amigos!. Seguimos con la serie sobre Samba y hoy veremos el paquete smbclient, el cual nos aporta toda una serie de herramientas para acceder a recursos compartidos en servidores Microsoft Windows y Samba.

Tengan siempre en cuenta que, nosotros damos Un Punto de Entrada a los programas o servicios sobre los cuales escribimos. NO pretendemos sustituir a la abundante documentación que muchas, pero que muchas veces, tenemos al alcance de nuestras manos en los repositorios de programas. Es por lo cual siempre decimos que, para más información, man <programa>, o recomendamos lean la documentación acompañante, SIEMPRE ANTES de buscar en Internet. Lástima que mucha documentación disponible en los repositorios esté en inglés. Disponemos actualmente de una abundante cantidad de Software Libre desarrollado por miles de entusiastas. Lo mínimo que podemos hacer es leer y estudiar un poco sobre el cómo usarlo. Seguro estoy que nuestra parte es la que menor esfuerzo requiere.

Por adelantado, pido disculpas por cualquier omisión u error involuntario. Escribir sobre la Suite Samba es una tarea muy ardua, aunque solo sea sobre un comando de ella.

Antes de continuar recomendamos lean:

En el artículo veremos:

  • SmbClient
  • Samba-Common-Bin
  • Ajustes al archivo /etc/resolv.conf
  • Introducción al archivo /etc/samba/smb.conf
  • Uso de SmbClient
  • Resumen

El paquete smbclient lo podemos instalar mediante el Synaptic o mediante la línea de comandos. Como root ejecutamos en una consola:

aptitude show smbclient
aptitude install smbclient

Observemos que también se instalan los paquetes samba-common y samba-common-bin. No se instala el programa Samba como tal, aunque SmbClient SI pertenece a la suite Samba.

SmbClient

El paquete nos brinda las siguientes herramientas:

  • findsmb: Lista información acerca de los equipos que responden a una consulta de nombres SMB en una subnet.
  • smbclient: Cliente parecido al ftp para acceder a recursos compartidos en servidores SMB/CIFS.
  • smbget: Utilidad parecida al wget para descargar archivos desde servidores SMB.
  • smbtar: Script de consola que funciona sobre el SmbClient el cual nos permite hacer copias de seguridad de recursos compartidos SMB/CIFS directamente a una grabadora de cinta en UNIX.
  • rpcclient: Herramienta para ejecutar del lado del cliente las funciones MS-RPC o Microsoft Remote Procedure Call. Más información en la ayuda de Windows.
  • smbspool: Envía un archivo a una impresora SMB.
  • smbtree: Listador o Browser SMB en modo texto. Similar al “Entorno de Red” de los equipos con Windows. Imprime un árbol con todos los dominios conocidos, los servidores de cada dominio y sus recursos compartidos.
  • smbcacls: Herramienta para manipular las Listas de Control de Acceso NT en carpetas o archivos compartidos de tipo SMB.
  • smbcquotas: Utilidad para administrar las Cuotas (Quotas) en recursos compartidos SMB.

Samba-Common-Bin

Por su parte samba-common-bin nos ofrece los siguientes programas:

  • net: Utilidad concebida para trabajar como el programa “net” de Windows. Es una herramienta para administrar servidores Samba y servidores remotos CIFS.
  • nmblookup: Cliente NetBIOS sobre TCP/IP que se utiliza para la búsqueda de nombres NetBIOS.
  • smbpasswd: Comando que nos permite cambiar la contraseña SMB de un usuario.
  • testparm: Utilidad que nos sirve para comprobar la sintaxis del archivo de configuración principal de Samba smb.conf.

De todos los comandos anteriores, personalmente he utilizado mayoritariamente testparm, smbclient, smbtree, net y smbpasswd. Sería un artículo largo en extremo, y además tedioso, de abarcar a todos los implicados.

Para probar SmbClient, confeccionamos una pequeña LAN con los siguientes equipos:

w2003: Controlador Principal de Dominio en Windows 2003 SP2, Enterprise Server, el cual brinda además los servicios de DNS y WINS. El nombre del dominio es amigos.cu. Los usuarios registrados en el Dominio son: elrond, legolas, pipin y trancos. En éste servidor tenemos la carpeta compartida tierramedia, a la cual hemos dado permisos de lectura a trancos y de lectura – escritura a pipin. El usuario elrond es también administrador del dominio.

miwheezy: Máquina con Debian 7.0 “Wheezy”, en la cual instalaremos el paquete smbclient.

precise: Equipo con Ubuntu 12.04 Server LTS y Gnome-Shell, en la cual también tendremos instalado el paquete SmbClient. A este equipo lo unimos al dominio amigos.cu, de forma que puedan iniciar una sesión local, los usuarios registrados en el dominio. Por tanto, tiene una cuenta de máquina en el controlador del dominio. El cómo se hace para unir un Debian o un Ubuntu a un Directorio Activo de Microsoft, lo veremos en un próximo artículo.

Samba: SmbClient

Ajustes al archivo /etc/resolv.conf

Es sumamente importante que declaremos el DNS correctamente, sobre todo si tenemos una LAN con un Controlador de Dominio Microsoft. En nuestro ejemplo, la IP del w2003.amigos.cu es la 10.10.10.30. Por tanto, el archivo /etc/resolv.conf quedará con el siguiente contenido:

search amigos.cu
nameserver 10.10.10.30

En el caso de que no tengamos instalado el Network-Manager-GNOME, por ejemplo, en un servidor, no estaría demás declarar correctamente los parámetros anteriores en el archivo /etc/network/interfaces.

Los DNS que se instalan cuando configuramos un Controlador de Dominio en Microsoft, tienen toda una serie de registros adicionales, que los integran fuertemente con las funciones de Directorio Activo.

Cualquier precaución que tomemos es válida para que Samba funcione correctamente y no tengamos que rompernos la cabeza por errores de configuración que pudimos evitar.

Introducción al archivo /etc/samba/smb.conf

Cuando instalamos el paquete smbclient, se crea el archivo principal de configuración de la Suite Samba: smb.conf.

  • Siempre haga una copia de seguridad del archivo ANTES de modificar cualquier aspecto.
  • Aunque la ayuda esté en inglés, recomendamos la LEA CUIDADOSAMENTE antes de aventurarse a cambiar cualquier parámetro.
  • Sino sabe nada de nada de inglés, por favor, cambie solamente lo indicado en la diferente literatura, incluido este artículo.

smb.conf contiene información de la configuración en tiempo de ejecución para los programas de la Suite Samba. Su sintaxis se comprueba mediante el comando testparm. Como en artículos posteriores veremos más sobre éste archivo, por ahora nos limitaremos a indicar los cambios mínimos necesarios que debemos realizar en él, en el caso de una máquina con Debian o Ubuntu y que no está unida a ningún dominio. Los cambios se resaltan en negritas.

 [global]

## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = AMIGOS
# server string is the equivalent of the NT Description field
   server string = %h server
# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
#   wins support = no
# WINS Server - Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
;   wins server = w.x.y.z
wins server = 10.10.10.30

### EL RESTO DEL ARCHIVO PERMANECE SIN CAMBIOS

O sea, que los cambios realizados serán en los parámetros workgroup y wins server solamente. Algunos se preguntarán por el uso de WINS. Samba recomienda fuertemente el uso de éste servicio en redes SMB/CIFS, para tener la IP de los nombres NetBIOS resueltas correctamente. Incluso, cuando se instala un Controlador de Dominio Samba, en el archivo de configuración smb.conf se le dice al demonio NMBD que actúe como un servidor WINS, mediante el parámetro wins support = yes, el cual NO es necesario en nuestro caso particular.

Comprobamos la sintaxis del archivo smb.conf:

xeon@miwheezy:~$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
    workgroup = AMIGOS
    server string = %h server
    map to guest = Bad User
    obey pam restrictions = Yes
    pam password change = Yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    unix password sync = Yes
    syslog = 0
    log file = /var/log/samba/log.%m
    max log size = 1000
    dns proxy = No
    wins server = 10.10.10.30
    usershare allow guests = Yes
    panic action = /usr/share/samba/panic-action %d
    idmap config * : backend = tdb
[.....]

## Si lo hacemos en precise.amigos.cu, el cual fue unido 
## previamente al dominio amigos.cu, la salida difiere
## un poco

trancos@precise:~$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
    workgroup = AMIGOS
    realm = AMIGOS.CU
    security = ADS
    os level = 0
    local master = No
    domain master = No
    template shell = /bin/bash
    winbind enum users = Yes
    winbind enum groups = Yes
    winbind use default domain = Yes
    idmap config BCTUK:range = 10000000-19000000
    idmap config BCTUK:backend = rid
    idmap config *:range = 11000-20000
    idmap config * : backend = tdb

Realizados los cambios, no es necesario reiniciar ningún servicio y ya estamos dispuestos a utilizar el comando smbclient.

Uso de SmbClient

SmbClient es básicamente un comando de consola. Por tanto haremos uso de ella.

En miwheezy.amigos.cu:

xeon@miwheezy:~$ smbclient -L w2003
Enter xeon's password: 
session setup failed: NT_STATUS_LOGON_FAILURE

## Resultado lógico, pues xeon no es un usuario registrado en el Dominio

xeon@miwheezy:~$ smbclient -L w2003 -U trancos
Enter trancos's password: 
Domain=[AMIGOS] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]

    Sharename       Type      Comment
    ---------       ----      -------
    C$              Disk      Default share
    IPC$            IPC       Remote IPC
    ADMIN$          Disk      Remote Admin
    SYSVOL          Disk      Logon server share 
    tierramedia     Disk      
    NETLOGON        Disk      Logon server share 
Domain=[AMIGOS] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]

    Server               Comment
    ---------            -------
    PRECISE              Samba 3.6.3
    W2003                

    Workgroup            Master
    ---------            -------
    AMIGOS               W2003

## Observen el recurso compartido tierramedia

xeon@miwheezy:~$ smbclient //w2003/tierramedia -U elrond
Enter elrond's password: 
Domain=[AMIGOS] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
smb: \> dir
NT_STATUS_ACCESS_DENIED listing \*
smb: \> exit

## Lógico!!!. Aunque elrond sea administrador, no tiene permisos en el recurso.

xeon@miwheezy:~$ smbclient //w2003/tierramedia -U trancos
Enter trancos's password: 
Domain=[AMIGOS] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
smb: \> dir
  .                                   D        0  Sat Jul 20 16:58:54 2013
  ..                                  D        0  Sat Jul 20 16:58:54 2013
  Carpeta de Pipin                    D        0  Sat Jul 13 13:01:46 2013
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.avi      A 366793752  Tue Sep 21 22:51:12 2010
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.srt      A    63362  Wed Sep 22 14:03:40 2010

        40915 blocks of size 262144. 29215 blocks available
smb: \> mkdir prueba
NT_STATUS_ACCESS_DENIED making remote directory \prueba
smb: \> exit

## Recordemos que trancos solo tiene permisos de lectura

xeon@miwheezy:~$ smbclient //w2003/tierramedia -U pipin
Enter pipin's password: 
Domain=[AMIGOS] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
smb: \> dir
  .                                   D        0  Sat Jul 20 16:58:54 2013
  ..                                  D        0  Sat Jul 20 16:58:54 2013
  Carpeta de Pipin                    D        0  Sat Jul 13 13:01:46 2013
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.avi      A 366793752  Tue Sep 21 22:51:12 2010
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.srt      A    63362  Wed Sep 22 14:03:40 2010

        40915 blocks of size 262144. 29215 blocks available
smb: \> mkdir prueba
smb: \> dir
  .                                   D        0  Sun Jul 21 14:21:30 2013
  ..                                  D        0  Sun Jul 21 14:21:30 2013
  Carpeta de Pipin                    D        0  Sat Jul 13 13:01:46 2013
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.avi      A 366793752  Tue Sep 21 22:51:12 2010
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.srt      A    63362  Wed Sep 22 14:03:40 2010
  prueba                              D        0  Sun Jul 21 14:21:30 2013

        40915 blocks of size 262144. 29215 blocks available
smb: \> ?
?              allinfo        altname        archive        blocksize      
cancel         case_sensitive cd             chmod          chown          
close          del            dir            du             echo           
exit           get            getfacl        geteas         hardlink       
help           history        iosize         lcd            link           
lock           lowercase      ls             l              mask           
md             mget           mkdir          more           mput           
newer          open           posix          posix_encrypt  posix_open     
posix_mkdir    posix_rmdir    posix_unlink   print          prompt         
put            pwd            q              queue          quit           
readlink       rd             recurse        reget          rename         
reput          rm             rmdir          showacls       setea          
setmode        stat           symlink        tar            tarmode        
translate      unlock         volume         vuid           wdel           
logon          listconnect    showconnect    ..             !             

## Listado de comandos y a continuación, ayuda sobre un comando
## Recuerden que smbclient es como un cliente ftp.

smb: \> help get
HELP get:
    <remote name> [local name] get a file

smb: \> exit
xeon@miwheezy:~$ ls -l
total 68
drwxr-xr-x 2 xeon xeon  4096 jul 13 12:56 Desktop
-rw-r--r-- 1 xeon xeon 63362 jul 21 14:24 Hawaii.Five-0.2010.S01E01.HDTV.XviD.srt

## Efectivamente, el archivo srt se copió en la carpeta DESDE LA CUAL INVOCAMOS
## al smbclient.

xeon@miwheezy:~$ man smb.conf > samba.man
xeon@miwheezy:~$ ls -l
total 420
drwxr-xr-x 2 xeon xeon   4096 jul 13 12:56 Desktop
-rw-r--r-- 1 xeon xeon  63362 jul 21 14:24 Hawaii.Five-0.2010.S01E01.HDTV.XviD.srt
-rw-r--r-- 1 xeon xeon 359814 jul 21 14:30 samba.man
xeon@miwheezy:~$ smbclient //w2003/tierramedia -U pipin
Enter pipin's password: 
Domain=[AMIGOS] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
smb: \> put samba.man 
putting file samba.man as \samba.man (10980,6 kb/s) (average 10980,7 kb/s)
smb: \> dir
  .                                   D        0  Sun Jul 21 14:31:36 2013
  ..                                  D        0  Sun Jul 21 14:31:36 2013
  Carpeta de Pipin                    D        0  Sat Jul 13 13:01:46 2013
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.avi      A 366793752  Tue Sep 21 22:51:12 2010
  Hawaii.Five-0.2010.S01E01.HDTV.XviD.srt      A    63362  Wed Sep 22 14:03:40 2010
  prueba                              D        0  Sun Jul 21 14:21:30 2013
  samba.man                           A   359814  Sun Jul 21 14:31:36 2013

        40915 blocks of size 262144. 29213 blocks available
smb: \> exit

## Probemos ahora el comando smbtree

xeon@miwheezy:~$ smbtree
Enter xeon's password: 
AMIGOS
    \\W2003                  
    \\PRECISE                Samba 3.6.3
        \\PRECISE\IPC$               IPC Service (Samba 3.6.3)
xeon@miwheezy:~$ smbtree -U legolas
Enter legolas's password: 
AMIGOS
    \\W2003                  
        \\W2003\NETLOGON           Logon server share 
        \\W2003\tierramedia        
        \\W2003\SYSVOL             Logon server share 
        \\W2003\ADMIN$             Remote Admin
        \\W2003\IPC$               Remote IPC
        \\W2003\C$                 Default share
    \\PRECISE                Samba 3.6.3
        \\PRECISE\IPC$               IPC Service (Samba 3.6.3)

## Observen la salida con usuarios registrados y los no registrados

Resumen

  • Siempre es recomendable ejecutar los comandos con las credenciales de un usuario registrado en el dominio aunque el equipo cliente no esté unido al dominio. Por supuesto que debemos conocer las credenciales de autenticación de ese usuario o tener nuestra cuenta de usuario en el dominio.
  • De lo anterior se infiere que NO ES OBLIGATORIO TENER LA MÁQUINA CLIENTE UNIDA A UN DOMINIO, a menos que queramos iniciar sesión en el equipo cliente como un usuario del dominio. De hecho, mi estación de trabajo no está unida al dominio de mi empresa.
  • Los comandos get y put trabajan desde el recurso compartido hacia la carpeta local o de la máquina cliente desde la cual se invocó el smbclient.
  • Para conocer todos los comandos internos de smbclient, debemos teclear el signo de cierre de interrogación ?.
  • Si realizamos las mismas operaciones anteriores desde un equipo previamente unido al dominio, los resultados serán los mismos. Lo comprobamos en nuestro precise.amigos.cu.
  • El uso de SmbClient va mucho más allá de lo que hemos visto en el artículo. En próximos posts lo veremos.
  • Aunque sea fuerte para muchos iniciados, la Suite Samba requiere de estudio personal. No todas las respuestas están en artículos en la Aldea WWW. Y muchos de ellos están en la lengua de Shakespeare.
  • No se desanimen al primer error. Si aprendemos como usar la Suite Samba, aprenderemos mucho sobre las redes SMB/CIFS y en particular, sobre redes Microsoft.

Por último, ejecuten en el Nautilus u otro navegador de archivos smb://pipin@w2003/tierramedia>, para establecer una conexión con ese recurso. Traten de abrir el archivo .avi con el VLC y luego con el Totem. Saquen ustedes sus propias conclusiones.

Y eso es todo por hoy, Amigos. Hasta la próxima aventura!!!.

Mi LAN:

Samba: SmbClient

 

Fuente: desdelinux

 

¿Quién está en línea?

Hay 4050 invitados y ningún miembro en línea