SAMBA! Compartir archivos para Windows en Linux
Samba es una herramienta GPL de Linux que nos permite compartir carpetas y/o recursos de nuestro servidor Linux para redes basadas en “grupos de trabajo” de MS Windows(r). Para muchos de ustedes puede que se trate de una trivialidad, pero dado que hay gente que no lo sabe, aquí les va una breve reseña sobre como compartir recursos desde mi Linux para una red Windows(r).
Básicamente es muy sencilla de configurar, al menos en un nivel básico, por ejemplo, compartir directorios personales de cada usuario de la red, una carpeta compartida común a todos, una lectora de CD en el servidor o impresoras. Si nos pusieramos exquisitos, hasta podríamos configurar nuestro Samba para que emulara un PDC(Controlador Primario de Dominio) de Microsoft Windows NT(r).
Pero en éste caso, nos concentraremos en compartir recursos y directorios basandonos en los usuarios del sistema. Para el caso, simularemos una red local que trabajará sobre un grupo de trabajo llamado “demo_red”.
Para comenzar necesitaremos instalar a nuestro Linux los siguientes paquetes:
samba o samba-commons
Si eres un usuario Debian: apt-get install samba o apt-get install samba-common
La diferencia entre estos paquetes es que el primero es el server, mientras que el segundo es el suite completo de herramientas de servidor y cliente.
Una vez terminada la instalación del paquete, debemos configurar el servicio. Para eso hay que editar el archivo “smb.conf” que está en “/etc“.
vi /etc/samba/smb.conf
Para hacer más sencillo el proceso de configuración, y eliminado varias lineas para dejar exclusivamente las necesarias para cumplir nuestro objetivo:
Nota: Los comentarios son precedidos por ‘#‘ o ‘;‘
;Mi primer Archivo de Configuración de Samba
[global]
server string = Linux Box corriendo Samba
workgroup = demo_red
encrypt passwords = yes
;
[prueba]
path = /home/usuario/prueba
read only = no
guest ok = yes
;
[prueba2]
path = /home/usuario/prueba2
read only = yes
guest ok = yes
NOTA: Reemplacen “usuario” por el nombre de un usuario válido. Además deberán crear los directorios prueba y prueba2 o seleccionar directorios ya existentes en el “home” seleccionado.
Aquí les va una configuración un poco más completa y comentada del archivo de configuración de Samba. De todas formas, la versión anterior es suficiente para realizar una prueba rápida!
#
#======================= Configuraciones Globales =======================
#
[global]
## Nombre del grupo de trabajo ###
# no debe contener espacios ni caracteres especiales.
workgroup = demo_red
;
## Nombre que identificará al server (Descriptivo)
# Esto pone: Servidor Dilbert (Samba Version 3.0.24)
# %h- Nombre del Host
# %v- Versión
server string = Servidor %h (Samba %v)
;
# Decmimos al demonio nmbd que no busque nombres NetBios a través de los DNS.
dns proxy = no
;
#### Debugging/Controles ####
;
## Le decimos al Samba que cree un archivo de registro por cada estación que se conecta
# %m- Machine
log file = /var/log/samba/log.%m
;
# Se pone un tope(KB) para los archivos de registro
max log size = 1000
;
####### Autenticación de usuarios #######
;
# Exigimos que para acceder a los recursos del servidor se deba tener una cuenta en el mismo.
security = user
;
# Esta opción debe estar en 'yes', ya que Windows manda las claves encriptadas.
encrypt passwords = true
;
# Debemos decirle a Samba dónde están las claves!
passdb backend = tdbsam
;
obey pam restrictions = yes
;
# Cuenta para invitados. Por defecto se deja comentada. No se permiten invitados.
; guest account = nobody
;
# Lista de usuarios NO habilitados a conectarse a los recursos
invalid users = root
;
########## Printing ##########
;
# carga la lista de impresoras en lugar de tener que definir una a una.
load printers = yes
;
# lpr(ng) Esto se cambia solo si se deseara especificar un printcap especial
; printing = bsd
; printcap name = /etc/printcap
;
# CUPS printing. Ver cupsaddsmb(8) del paquete
# cupsys-client
; printing = cups
; printcap name = cups
;
# Cuando se usa [print$] se puede decir qué usuarios/grupos puede agregar controladores
# de impresoras o administrar las colas de impresión.
# @lpadmin- grupo de administradores de impresión
# Por defecto: Solo root
; printer admin = @lpadmin
;
############ Generales ############
;
# Podríamos tener una config. de Samba por cada terminal!
# basta con descomentar la linea siguiente...
# %m- Maquina (Corresponde al nombre NetBios de la estación que se conecta)
; include = /home/samba/etc/smb.conf.%m
;
# Mejora la performance de la red!
# Ver smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/speed.html
SO_RCVBUF=8192 SO_SNDBUF=8192
socket options = TCP_NODELAY
;
#======================= Recursos compartidos =======================
;
# Compartimos el "home" de cada usuario
# No apareceran en la lista de recursos compartidos pero
# se los podrá conectar mediante servidorusuario
# para que aparezcan listados modificar la opción 'browseable' a 'yes'
[homes]
comment = Carpetas personales
browseable = no
;
# Nos aseguramos que SOLO el usuario pueda conectarse a su carpeta personal
valid users = %S
;
# Hacemos que sea lectura/escritura (Por defecto es solo lectura)
writable = yes
;
# Máscara para creación de archivos (600) solo legible por propietario
# Si se desea que los archivos sean modificados por el grupo
# el permiso debería ser 0664.
create mask = 0600
;
# Máscara para creación de directorios (700) solo accesibles por propietario
# Si se desea que los directorios sean accedidos por el grupo
# el permiso debería ser 0755.
directory mask = 0700
;
[printers]
comment = Todas las impresoras
browseable = no
path = /tmp
printable = yes
public = no
writable = no
create mode = 0700
;
# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
# Administración remota de controladores de impresora.
# Reemplazar @ntadmin por el nombre de un grupo al que pertenezcan sus usuarios.
write list = root, @ntadmin
;
# Compartiendo el CD-ROM.
[cdrom]
comment = Lectora de CDs
writable = no
locking = no
path = /cdrom
public = yes
# Debe agregarse una linea como esta en su /etc/fstab
#
# /dev/hdc /cdrom iso9660 defaults,noauto,ro,user 0 0
#
# Estas lineas son las que montan/desmontan la unidad cuando hace falta
preexec = /bin/mount /cdrom
postexec = /bin/umount /cdrom
;
# Compartimos una carpeta común a todos
[compartida]
comment = Carpeta compartida
browseable = yes
path = /home/compartida
public = yes
writable = yes
create mask = 0777
directory mask = 0777
Una vez hecho esto, debemos reiniciar(como root) el Samba para que tome las nuevas configuraciones.
/etc/init.d/samba restart
Dado que activamos la opción que exige un usuario del sistema para conectarse a los recursos, deberemos crear usuarios en nuestro sistema:
adduser pepe
Y luego, asignarle una clave para el samba:
smbpasswd -a pepe
Esto pedira la contraseña para el usuario pepe, la que deberá ser ingresada dos veces para poder confirmar su ingreso.
Listo… Pepe ya podrá conectarse desde su terminal de windows al servidor como si se tratara de un Windows más en la red! Es importante aclarar que para que los Windows puedan acceder a los recursos compartidos, deben tener instalado el protocolo TCP/IP, el Cliente para redes Windows, y lo más importante… que no se haya presionado “[Esc]” cuando solicitaba inicio de sesión. ;)
Si estás buscando algo más potente… te recomiendo: http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba-html/



Hola, quisiera saber si este manual vale tanto para acceder desde clientes windows como para acceder desde clientes linux..
Muchas gracias y un cordial saludo
Roberto, este habilita a que tu Linux comparta sus recursos como si fuera un Windows(r) más en la red.
Desde la navegación por la red en windows lo veras como un equipo más con windows.
Si deseas acceder directamente simplemente puedes hacer:
Desde Windows(r) en el explorador:
//IP_de_TU_linux/recurso_compartidoDesde Linux:
usas el comando smbmont o mount -t smbfs
smbmount \\IP_de_TU_linux\recurso_compartido \dir_para_montar -o opcioneso
mount -t smbfs -o username=usuario //IP_de_TU_linux/recurso_compartidoSi usas KDE puedes poner desde el Konqueror:
smb://usuario@IP_de_TU_linux/recurso_compartidoEn cualquiera de los ejemplos puedes reemplazar IP_de_TU_linux por el nombre NetBios de tu máquina:
smb://usuario@sambaBox/recurso_compartidoWikipedia: KDE
Hola Gustavo,
Se que debe ser un descuido por respuesta apurada no mas pero hay un error.
Ahi desde win deberías usar nomenclatura UNC o sea usando retro barras \\IP_de_TU_linux\recurso_compartido
y aca
seria mount -t smbfs //IP_de_TU_linux/recurso_compartido -o username=usuario /directorio/directorio
para especificar nombre de usuario, después nos pedirá clave, se le puede pasar en la misma orden pero no queda prolijamente seguro y al final el directorio donde queremos montarlo yo crearia una carpeta bajo /mnt
Saludos,
Gracias Merk3l! He corregido esos detalles en el comentario anterior!
hi mi name is emilio. well i have a problem because i want to make samba but i am a novato using linux.
can you help me how to install samba please
Hey… José… or Emilio :? anyway, if you want me to help you install Samba, you must give more info!
Which distribution are you using? I assume you are not using Debian nor any Debian based distro, cause the instructions to install samba are “pasted” at this post!
as root and you’re done!
Holas,porfis dame una manito con este problem, en la red windows en mi trabajo se nos ocurrio instalar linux en una de ellas, le instalamos el mandriva 10 , ahora deseo entrar a carpetas compartoidas en este PC_mandriva a traves de mi PC_Windows, (con win xp SP2) lo unico k hice fue editar el smb.config con el ejemplo basico k pusiste en tu web,lo unico k consegui fue ver desde mi PC_win en mi explorador el grupode trabajo,pero cuando e hago doble click se cuelga un rataaaazo y me sale un mensaje de error, diciendo k probablemente no tengo derechos, como t digo no hice nada mas k editar el smb.config, soy novato en esto de linux porfis ayudame, gracias de antemano
Jorge, el tema ahí es que probablemente el usuario de tu windows no esté declarado en el sistema de linux.
te recomiendo 2 cosas… o que compartas sin restricciones o que crees tu user de Win en el linux:
adduser pepe
smbpasswd -a pepe
supongo que viene por ese lado… de lo contrario no entendí…
Viejo muxas gracias por sabios consejos y ayuda, tengo una pequeña red en mi ksa y vecina y me ha funcionado perfectamente. yo utilizo debian :) muchas gracias !!
buenas….
hice todo lo q explicas n tu post, y desde otra maquina con debian me conecto perfectamente, pero cuando inteto conectarme desde una maquina con window$, me sale una ventana pidiendome usuario y contraseña. de que manera debo colocar el usuario? porq si coloco el nombre solo no lo reconoce, intente colocando netbios, ip, y nada… que hago???
Pues nada… debería funcionarte sin problemas! Si desde un linux te estás conectando vía samba es el mismo sistema.
El usuario debería ir solo, sin el nombre de la máquina, y si el user/pass de tu Windows(r) es igual al creado en el Samba server, ni siquiera hace falta volver a identificarse.
Puedes probar haciendo eso… crea un user en samba que se llame igual que tu user del cliente y ponle la misma password.
Debes tener en cuenta que los nombres de usuario no debería contener espacios en blanco ni chars especiales.
dejame replantearte mi problema… yo tngo una red heterogenea, con un dominio en un servidor con debian sarge y equipos en windows xp, suse 10.x y debian 4.0, cuando comparto un directorio con suse lo veo perfectamente de cuelquier equipo incluso sin autentificacion, cuando comparto un directorio con windows igual, pero cuando lo hago con debian me pide autentificacion, he intenado la nomenclatura UNC, es decir colocando nombredeequipo\usuario y la contraseña, tambien usuario@nombredeequipo, tambien usuario@grupodetrabajo, etc. etc. n q m estoy equivocando?
Estimado “Perro”: Estuve navegando por toda la red buscando la instalación de SAMBA por aproximadamente dosa semanas, pero soy tan newbie con esto que nomás no me funcionaron las otras tentativas, y con la primera parte de tu tutorial a la primera funcionó… MIL GRACIAS COMPAÑERO.
tienen idea de por que me saca el siguiente error cuando monto la unidad en otra maquina linux ?
[root@localhost ~]# mount -t cifs //192.168.1.202/v5 /root/Escritorio/v5 -o username=smb_v5,password=***
mount error 5 = Input/output error
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
[root@localhost ~]#
Porgramacion
Linux
Windows
la verdad es que no lo se… ese comando es correcto y la sintaxis también…
Puedes tirar algún dato adicional?
una pregunta, como instalo el samba en suses 10 ?? me puden dar el comando por fa… o los pasos necesarios…
gracias.
Hola. Yo segui los pasos y logro conectarme de mi debian a mi equipo windows, pero cuando quiero acceder desde windows a linux no me deja, me dice que no tengo permisos.
Lo que se me ocurre que puede llegar a estar pasando es que en mi inicio de sesion de XP no tengo contraseña para entrar, sino que entra directamente.
umm… puede ser… la verdad es que no recuerdo exactamente el comportamiento del Win, pero lo lógico sería que si no coincidieran las claves de acceso, te la pidiera al momento de intentar acceder al recurso compartido.
Otra cosa que puede estar pasando es que te hayas olvidado de crear el usuario para el samba en el sistema linux, recuerda que eso es aparte de la creación/existencia del usuario del sistema. Por las dudas te paso el comando que debes ejecutar en el server:
# smbpasswd -a nombre_usuarioEsto agregará a samba el usuario y lo sincronizará con el usuario del sistema.
Muchisimas gracias por tu entrada. Muy bien explicada. No tiene “peros”.
PERFECTO, un saludo!