Samba es la aplicación o servicio que se encarga de que podamos compartir carpetas en red. Normalmente viene instalado en la versiones de escritorio, pero en los servidores no es así. Y para que queremos instalarlo? Bueno, quizá queramos aprovechar el hecho de tener un servidor dedicado en casa (o si tenemos uno contratado, usar Hamachi) para poder alojar archivos directamente sin necesidad de instalar un servidor FTP, o bien para que los usuarios (puede que nuestra familia o nosotros mismos) tengamos mas comodidad.
Actualmente las consolas como PS3 también nos dejan buscar carpetas compartidas en red, por lo que podríamos tener las películas alojadas en la carpeta compartida. Sea lo que sea, si necesitáis compartir carpetas en linux, aquí vamos a hacerlo paso a paso y sin interfaz gráfica (como en Driverlandia nos gusta).
Cabe decir que aunque este tutorial pone que es para debian, sirve para todos los que están basados en él (Ubuntu, Mint…)
Instalando Samba en Linux
Pues lo primero es tirar de la instalacion via repositorios
apt-get install samba
Nos saldrá una ventana azul donde nos solicitara el nombre del grupo de trabajo. Le indicamos el que ya usemos en casa con los otros ordenadores o en caso de no usar ninguno anteriormente, le asignamos el que queramos. En mi caso le asignare REDCASA como nombre de grupo de trabajo.
Configurando una carpeta compartida
Primero hemos de crear la carpeta o bien decidir cual vamos a compartir. En nuestro caso crearemos una que llamaremos public, para que todos los usuarios puedan leer y escribir información en ella. Procedemos a crearla (en el lugar donde mas os guste).
mkdir public
chmod 777 public/
Con chmod 777 le estamos diciendo que cualquiera tenga TODOS los permisos en esa carpeta para lo que hay actualmente (vease la carpeta). Mas adelante con el umask, le diremos que todo archivo que entre en esta carpeta, tenga permisos 777 automáticamente.
Ahora le vamos a decir a samba que comparta esta carpeta, por lo que vamos a editar el archivo de configuración de samba, donde le diremos que carpeta y con que permisos.
nano /etc/samba/smb.conf
[warning]ACTUALIZACIÓN 2016! Dependiendo de la versión de Samba que tengas, puede que la configuración citada justo debajo ya no sirva, si es tu caso, te recomiendo que mires la conversación en los comentarios, desde http://www.driverlandia.com/instalar-samba-para-compartir-carpetas-en-linux-debian/#comment-852. Además es posible que algun Windows 10 no consiga conectarse debido a restricciones de acceso a carpetas sin contraseña, para cambiar esta configuración te recomiendo que revises el post Error al acceder a carpeta compartida en Windows 10 (se abrirá una nueva ventana al pulsar)[/warning]
En [global] podemos cambiarle el grupo de trabajo (si nos hemos equivocado, o se ha cambiado a otro).
workgroup = REDCASA
Bajamos a ## Authentication ## y vemos que nos dice # «security = user» is always a good idea. This will require a Unix account por lo que por defecto, necesitamos tener un usuario en Linux para que podamos acceder a esa carpeta compartida. Si queremos evitar que nos pida usuario para cualquier carpeta (incluso las publicas) debemos indicarle que por defecto los permisos son de compartir (luego podemos editar y configurar los permisos para otras carpetas, haciéndolos mas restrictivos).
security = share
Además de eliminar el # que hay delante, para descomentar la línea.
De esta forma le estamos diciendo a Samba que por defecto toda carpeta compartida puede ser vista por todos los usuarios que tengan acceso a la red y al grupo de trabajo.
Bajamos al final del archivo y creamos nuestra configuración de carpeta y escribimos la configuración de nuestra carpeta compartida publica
[comun]
path = /public/
read only = no
security = share
null password = yes
case sensitive = no
comment = Carpeta publica accesible desde Web
guest ok = yes
browseable = yes
umask = 000
Voy a proceder a explicarla configuración.
- [comun] – Es el nombre con el que queremos que la carpeta compartida aparezca en la red, no tiene porque llamarse igual que la carpeta que hemos creado.
- path – Ruta absoluta de la carpeta que compartimos.
- comment – El comentario o descripción que asignaremos a esta carpeta compartida.
- read only – Hacemos que los usuarios puedan escribir.
- security – Le estamos diciendo que esta es publica y no necesita usuario y password (no es necesario si esta definido en el Authentification.
- null password – Que no pida password para intentar acceder a ella.
- case sensitive – Que no diferencie mayúsculas y minúsculas (los sistemas windows no lo hacen).
- guest ok – Que puedan acceder invitados
- browseable – Que nos aparezca en las carpetas compartidas de la red.
- umask – Con 000, estamos diciendo que todo archivo que guardemos en ese directorio tenga permisos 777.
Guardamos el archivo, cerramos y reiniciamos el servicio de samba.
service samba restart
Ahora cualquier ordenador que este en la red podrá acceder a la carpeta compartida, leer y escribir archivos en ella. Si accedemos desde un cliente linux, solo hace falta poner en el navegador de carpetas
smb://ipdelservidor
Si queremos mapear esta carpeta como una unidad de red en sistemas Windows
net use Z: \\ipdelserver\nombrecarpetacompartida
Y en Equipo (Mi PC) aparecerá una unidad de red que si entramos nos llevará directamente a la carpeta que hemos compartido en servidor Linux.
61 comentarios
1 ping
Saltar al formulario de comentarios
Buenas noches, muchas gracias por esta información, todo me funciona bien, pero cuando trato de entrar desde Windows 7 Ultimate, me pide el nombre de un usuario y su contraseña, en pocas palabras, pone: Enter Network Password.
Cabe destacar, que hice todo tal cual!!. Gracias…
Autor
Has puesto en el smb.conf
security = share
Ojo porque como indico en el post, no es el security que asignas en la carpeta, es el comun (que por defecto esta configurado comosecurity = user
)Poniendo esto no te debería solicitar contraseña ni usuario salvo que luego se lo indiques al definir la carpeta compartida. Vamos yo lo tengo asi tal y como he puesto en el post y desde Windows 7 Professional y Windows 7 Ultimate (pc y portatil) no me pide password.
El primer usuario tiene razón, pide usuario y contraseña. Yo también hice todo tal cual.
funcionando desde windows 7 con normalidad modificando la linea «security = share»
Autor
Entonces veo que ambos usuarios anteriores no hicieron esto, que ademas esta
comentado en el tutorial. Gracias por informar que te ha funcionado.
no sabia que existiera este comando creo que por eso cuando configuraba el mio tenia que acceder solo con la dirección ip del servidor y no aparecía como si estuviera en red, Gracias.
Perdona, tengo una consulta, para crear la unida de red en windows, lo hago desde el servidor linux o donde ingreso net use Z: \\ipdelserver\nombrecarpetacompartida. Agradezco mucho tu tutorial, me parece excelente, solo tengo esa duda. Mil gracias.
Autor
Pues suponiendo que tu quieres acceder a esa carpeta desde un cliente Windows. Debes añadir ese comando en Inicio – Ejecutar de tu sistema Windows. Si el nombre de la carpeta lleva espacios, por ejemplo supongamos que es peliculas hd debes ponerlo con comillas, tal que asi:
net use Z: "\\ipdelserver\peliculas hd"
Yo lo hice desde Equipo. Arriba dice «Conectar a unidad de red»… Es más fácil….
Autor
Si, realmente es lo mismo , pero a los sysadmin seguramente no es mas comodo poner el comando que andar siguiendo un asistente :D
cuando lo haces por ssh es mas rapido el comando, aparte eso de salir de la baticueva para ir a poner una unidad de red… bueno…
Varias correcciones por si acaso a alguien no le funciona
En algunos sistemas el security = share tiene un # delante. Hay que quitarlo.
Y el daemon de samba en algunos sistemas es smbd. Y el último comando sería: service smbd restart
Autor
Gracias por el aporte, supongo que en Debian 7 ya es así smbd, en el caso de Debian 6 es tal cual pone el post. Aún así gracias por tu complementación :)
perdona mi ignorancia pero como se cual es la ip??
Autor
Con el comando ifconfig te saldran las tarjetas de red y sus ip.
Lo recomendable es que le pongas una ip estatica al servidor, te dejo un tutorial http://www.driverlandia.com/configurar-tarjeta-de-red-con-ip-estatica-en-debian-sin-interfaz-grafica/
si te sale error de permiso
dale: chmod -R 777 /tucarpetacompartida
Te haría un monumento solo por este manual!!
Seguí los pasos tal cual los indicas y todo esta perfecto…. a excepción de un problema que tuve pero que fue culpa mia y del copy-paste, porque puse como directorio compartido el mismo que tu: «path = /public/» y al tratar de acceder a la carpeta desde Windows me daba un error…
Lo detecte rápidamente mirando los logs del samba, que para quien no lo sepa están en «/var/log/samba/». En este directorio, había un fichero log donde indicaba claramente el problema….
Asi que a todos los que dicen que no les funciona que miren el log, porque los pasos a seguir son claros y precisos!
Muchas gracias.
Autor
Gracias a ti por comentar. Normalmente los tutoriales que ves en este blog son cosas que he ido haciendo y he querido documentarlas por dos motivos
1 – Cuando lo tenga que volver a hacer, tener una guia ~bien documentada. (no es perfecta)
2 – Aprovechar para que el tutorial pueda ayudar a la gente.
Por eso me extraña que habiendome funcionado a mi tal cual, muchos dijeran que no les funcionaba.
Disculpa, hice todos los pasos del tutorial pero me marca un error, te explico:
-En debian al tratar de abrir la carpeta compartida me sale el sig mensaje «No se pudo montar el lugar. Falló al montar la compartición de Windows»
– En windows al abrirla sale el sig mensaje: «no se puede obtener acceso a \\PCDEBIAN\public. es posible que no tenga permisos para usar este recurso de red.
uno de los dispositivos conectados al sistema no funciona»
a que se deberá?? Saludos
Autor
Pues que se te ha olvidado poner lo de Share, o los permisos. Como indica fbedia mirate los logs de samba /var/log/samba y ahi veras el error que te da al intentar acceder.
Hola estimado, antes de decir algo, te agradezco por esta información, muy bueno, pero tengo un problema, segui todos los pasos(incluso revise que estuviese security = share), pero aun windows me pide usuario y contraseña…saludos
Autor
Entiendo pues que estamos hablando del security = share de la configuración comun no de la carpeta en si. Mira que no haya un # delante de esa linea, si lo hay borralo puesto que la esta considerando como un comentario y por lo tanto no aplica la norma. Una vez lo hayas cambiado recuerda reiniciar el servicio de samba
hola estimado, gracias nuevamente, pero te comento que el simbolo # elo habia borrado, pero tenia un ; antes y se lo borre, tambien de curioso descomente donde decia wins support = no y lo cambie por yes, y me funciono a la perfección…gracias por tu aporte, me sirvio de mucho…
Hola, tengo configurado todo tal cual y puedo ver las carpetas compartidas correctamente, pero al querer escribir algo me dice que no tengo los permisos necesarios, que puedo hacer para que todos tengan permisos de escritura ?
Autor
Hola Julian pues seguramente te falta.
– Realizar un chmod 777 -R /carpeta/que/compartes
Esto te asignará permisos de lectura y escritura a la carpeta y todo lo que haya dentro.
– Poner el atributo umask en la configuración.
Esto hará que todo archivo-carpeta que introduzcas por defecto tenga unos permisos (que tu le defines).
Muchas gracias Guille por esta guía. A mi me dió perfecto, estaba buscando una guía que use solo la terminal y todo perfecto.
Para muchos que no les resultó intenten con esto:
workgroup = WORKGROUP
Autor
De nada, respecto a lo de WORKGROUP tal y como digo en el tutorial, hay que poner el nombre de la red de trabajo que se tenga en Windows. En este ejemplo pues he optado por cambiarlo y poner REDCASA.
saludos
Como puedo yo ejecutar archivo exe de windows, puesto que ya tengo los archivos en una carpeta del servidor samba.
Gracias
Autor
Pues igual que lo ejecutas desde una carpeta de Windows. Doble click y ya esta. Otra cosa es que el programa este preparado o no tenga algun impedimento para funcionar desde carpetas de red.
Tengo un problema son el smb.conf y el umask. Le he configurado con umask=000 sin embargo cuando reinicio el servicio samba y reviso el log sale un mensaje que no reconoce el comando y lo ignora. Me he dado cuenta de eso porque cuando creo un archivo desde un terminal windows y reviso sus permisos desde el servidor, no son 777. ¿alguna ayuda?
una pregunta, siguiendo tu tutorial pude compartir una carpeta de un debian a windows, perfecto, puedo crear archivos carpetas y todo, pero no me deja eliminarlas, para ello tengo que entrar al Debian y borrarlos a mano, ¿cual puede ser la causa?.. Muchas gracias.
Hola muchas gracias me sirvio bien para crunchbang 11 para compartir con windows 7
aunque estaba el smb.conf el servicio no estaba instalado ni corriendo. con apt-get install samba anduvo bien.
Buen tutorial me sirvio mucho y ahora haz una segunda parte con mas tips
Muy buen trabajo hace dias buscaba esta informacion
Gracias por el aporte.
Tengo un servidor viejito con arquitectura sparc y debian 7 instalado en el. Funciono todo tal cual lo pones en el tutorial.
Autor
Me alegro que te haya funcionado, ahora a disfrutarlo jejeje
# “security = user” is always a good idea. This will require a Unix account
no me aparece # “security = user” is always a good idea. This will require a Unix account
BUen día, estimado porfa una consulta, yo tengo mi servidor de dominio y tengo mi servidor de archivo en linux debian, ahora todaslascarpetas estan publicas, pero Yo quiero solo habikitar a determiandos usuarios a cada carpeta segun su nombre de dominio, que pasos puedo realizar para darle seuridad a estos usuarios… gracias x tu gentil apoyo
Autor
Deberás buscar un manual de samba con active directory
cuando pongo en la consola nano/etc/samba/smb.conf me dice que no existe el fichero. AYUDAAAA soy principiante
Autor
Prueba a separar el nano del /etc/….
Hola, estoy intentando compartir carpetas de Debian 8 a Windows 10, a la hora de abrir una carpeta en windows me aparece que no puede obtener acceso a la carpeta «Es posible que el nombre de la ubicación no esté bien escrito o que exista un problema con la red» y en detalles «No se ha encontrado la ruta de acceso de la red.»
La carpeta se encuentra en home y en el archivo de config. de samba está como path = /home/Carpetacompartida/
Autor
Eso se debe a que Windows 10 tiene desactivado el acceso a carpetas SMB que no tienen password puesta. Busca en google ‘activar samba en Windows 10’
No, intenté esto:
https://www.schkerke.com/wps/2015/06/windows-10-unable-to-connect-to-samba-shares/
También esto:
https://www.schkerke.com/wps/2015/06/windows-10-unable-to-connect-to-samba-shares/#comment-18448
Y esto:
https://support.microsoft.com/en-us/kb/2696547
Y sigue apareciendo el mismo mensaje, la buena noticia es que ya aparece la htpc en Redes en lugar de tener que escribir \\nombredeequipo
Pero sigo sin poder entrar a las carpetas compartidas.
Autor
Prueba ejecutando este archivo de registro , a mi me ha funcionado sin problemas.
Ejecutar http://driverlandia.com/filez/ActivarSambaWin10.reg y reinciar Windows.
Lamentablemente no, quizas el problema sea mi config. de samba? En Windows logro ver la PC y me aparecen las carpetas compartidas pero al tratar de abrirlas es cuando me dice que no encuentra la ubicacion, este es mi archivo de configuracion:
http://pastebin.com/fuU7T4Sf
Autor
Perdona que haya tardado tanto en contestar pero he estado de exámenes y no he tenido mucho tiempo.
He actualizado el archivo .reg que tienes en el comentario de encima, trae mas modificaciones, puesto que el otro día cuando tuve que conectarme a un SAMBA desde un Windows 10, también me fallaba usando el .reg, sin embargo en otros ordenadores con Windows 10 esto no sucedía. Despues de mirar las diferencias en el registro de Windows, he copiado la configuración de uno de los ordenadores que se conecta perfectamente y al aplicarla a los otros ha funcionado correctamente.
Así que vuelve a descargarte el .reg si aún no has conseguido que te funcione y vuelve a ejecutarlo. Por cierto hay que reiniciar para que el programa que se conecta con samba aplique los nuevos cambios.
No, el problema persiste, no será error de mi Samba? que esté mal configurado, porque con Windows ya no quedan más opciones.
Autor
Desde un Windows 10, Windows 7, Windows XP poniendo en ejecutar \\nas\comun me muestra perfectamente la carpeta del NAS. Es mas he probado con un Windows 10 sin parche aplicado y ha mostrado correctamente la carpeta.
Desde un portátil con Ubuntu 15.10 navegando por RED, encuentra el NAS y me permite entrar sin solicitar password.
Desde un Ubuntu 15.10 que hace de mediacenter en el archivo /etc/rc.local
mount -t cifs //10.10.3.10/comun/ /mnt/nas -o rw,sec=none
La configuración de mi archivo smb.conf es la siguiente, tal cual copiado, tiene borrado todo lo que viene por defecto y solo he dejado las lineas que ves a continuación.
[global]
workgroup = REDCASA
map to guest = bad user
[comun]
path = /nas/downloads/
comment = Shared Downloads
writable = yes
guest ok = yes
share modes = yes
usershare allow guests = yes
create mask = 666
directory mask = 777
force create mode = 666
force directory mode = 777
inherit permissions = yes
Ten en cuenta que el post que hay en esta pagina es de hace ya años, y ha cambiado la configuración (cosa que me encontré al montar este nuevo NAS hace unos meses). Voy a poner un mensaje al principio del post indicando que puede que no funcione con las nuevas versiones de Samba.
Excelente aporte, solo una pregunta sabes como hacer para crear usuarios y estos puedan ingresar a cada carpeta ? Estoy tratando de hacerlo. Gracias Saludos
Autor
Añade el
valid users = user1 user2 user3
guest ok = no
Recuerda que en el cliente Windows deberás indicarle que se ha de conectar usando algún usuario que disponga de permisos. Con esto debería bastarte.
Hola una consulta, es posible compartir carpetas y que se puedan acceder desde internet? O con cual version de linux o distribuciones nas se puede hacer, evitando hacerlo via ftp, sino poniendo la ip publica y asi poder acceder desde un equipo con windows. Si me pudieran ayudar
Autor
Puedes, si es solo para ti o amigos puedes montar una vpn y que se conecten via VPN. (Ej Hamachi si es 4 personas) o una VPN con Openvpn si son mas…
Otra opcion es directamente abrir los puertos en el router para el protocolo SAMBA y almenos que las carpetas esten protegidas por usuario y password.
Entonces me comentas que es posible realizarlo, claro si la idea es que cuenten con contraseña, entonce es posible realizarlo, que por ejemplo un familia, desde su casa, poniendo la ippublica, poder acceder a las carpetas?
Autor
Claro, igual que si funcionara en red local. Te recomendaría que se usara via VPN para asegurar las conexiones (evitar que haya alguien escuchando en la red y obtenga usuario y contraseña (diria que va en texto plano)).
Si lo quieres para montarte una especie de Dropbox, puedes montar un Owncloud sobre HTTPS.
Pero respondiendo a tu pregunta si. SI ABRES LOS PUERTOS necesarios para que funcione el SAMBA, podras conectarte usando lo tipico de inicio -> ejecutar -> \\ipserver\carpeta
Genio total Guille, Muchas gracias
hola que tal, tu Post la verdad que me ayudado muchisimo. muchas gracias.
pero ahora. tengo una prqueña dificultad.
necesito que la carpeta me solicite la dredencial de usuario.
me podrías indicar como activarlo o cual o como debería poner el usuario, o que me esta haciendo falta para poder tener la carpeta compartida de manera segura con contraseña.
buenas noches, es necesario el samba si quiero compartir la carpeta entre usuarios del mismo debian? por lo q lei sirve para debianwindows
desde ya muchas gracias saludos
Autor
Del mismo debian te refieres supongo a la misma maquina? Entonces no hace falta, te recomiendo que crees una carpeta en /usr/share o otra opcion es crear una llamada /nas a la que asignaras a un grupo.
Luego con meter en ese grupo nuevo a los usuarios que quieras que puedan crear, eliminar, modificar etc archivos en esa carpeta ya estara.
SMB (Samba) es el protocolo que utiliza Windows para compartir carpetas entre ordenadores de la red. Por ello si quieres compartir carpetas desde un pc con Linux a un pc con Windows has de usar SMB, tambien puedes entre dos o N maquinas Linux , aunque si solo son linux tambien puedes hacer uso de NFS (vendria a ser el Samba de los Linux).
Pero entendiendo que no es tu caso, con crear una carpeta, asignar permisos para los usuarios que quieras que tengan acceso (te sera mas fácil crear un grupo y meter a los usuarios en ese grupo).
Espero haber solventado tu duda :)
saludos,,, en samba como en muchos archivos, hablo de una arquitectura 64bit linux debian wheezy, tener sumo cuidado con dejar espacios,,, por ejemplo…. valid users = user1 user2 user3…. este caso… samba no lo toma en cuenta debería verse asi,,,,, valid users=user1 user2 user3,,,, sin espacios entre el = de ambos lados, hace un tiempo me partía la cabeza pensando que habré echo mal… hasta que se me ocurrio eliminar los espacios y realmente me dio resultado,,, luego lo hacía a drede y vei como ciertos errores se presentaban….. espero sea de ayuda… gracias por su tutorial….
Creando Servidor Samba (Linux)
SAMBA es un conjunto de aplicaciones linux que implementa el protocolo SMB con el que podremos compartir recursos con equipos linux y también con equipos windows , es decir , samba nos permite integrar todos los equipos de la red sean…