¡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.
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:
Fuente: desdelinux