Beruflich Dokumente
Kultur Dokumente
CURSO 16/17
CONTENIDO
SAMBA .......................................................................................................................................................... 2
INTRODUCCIN. ....................................................................................................................................... 2
HISTORIA. ............................................................................................................................................. 2
CARACTERISTICAS. ................................................................................................................................ 3
INSTALACIN. ........................................................................................................................................... 3
CONFIGURANDO SAMBA. ......................................................................................................................... 3
SMB.CONF ............................................................................................................................................ 3
PUBLICACION DE CARPETAS DE FORMA ANONIMA. NO RECOMENDADA. ............... Error! Marcador no
definido.
PUBLICACION DE UNA CARPETA PARA UN UNICO USUARIO. .................................................................. 4
PUBLICACIN DE CARPETAS CON ACCESO RESTRINGIDO A VARIOS USUARIOS. ..................................... 6
PUBLICACION DE LAS CARPETAS HOME DE CADA USUARIO. ................................................................... 8
PUBLICACION DE CARPETAS ANONIMAS CON SEGURIDAD HABILITADA. ................................................ 9
PUBLICACIN DE IMPRESORAS. ............................................................................................................. 11
ACCESO A RECURSOS COMPARTIDOS COMO CLIENTE........................................................................... 12
MONTANDO RECURSOS COMPARTIDOS EN NUESTRA MAQUINA LINUX. ............................................. 15
SAMBA
INTRODUCCIN .
Microsoft Windows utiliza un protocolo de red conocido como Server Message Block (SMB). Este
protocolo SMB fue originalmente desarrollado por IBM, y fue modificado por Microsoft. Antiguamente
este protocolo funcionaba directamente mediante NETBIOS sobre IPX/SPX, y fue modificado para poder
funcionar tambin sobre TCP, utilizando para ello el puerto 139.
Desde Windows 2000 Microsoft modific SMB para que funcionar directamente sobre TCP, sin necesitar
NETBIOS y usando el puerto 445. Tambin introdujo novedades como los enlaces duros, enlaces
simblicos, ficheros de mayor tamao, etc. Esta modificacin de Microsoft recibi el nombre de CIFS
(Common Internet File System) pero no se suele utilizar mucho, dado que no fue aprobada como estndar.
El proyecto SAMBA se origin con la idea de crear un protocolo compatible con SMB (propiedad de
Microsoft) y que pudiera ser distribuido como open source. Para ello se utiliz ingeniera inversa sobre
SMB por parte de Sun Microsystems. A causa de la importante difusin del protocolo SMB, SAMBA se ha
convertido en un protocolo tremendamente popular para poder comunicar directamente maquinas Linux
y maquinas Windows dentro de una red local.
En 2006 Microsoft introdujo SMB2 dentro del sistema operativo Windows Vista. Aunque SMB2 sigue
siendo software propietario, Microsoft ha publicado todas sus especificaciones para permitir que otros
sistemas interacten directamente con este nuevo protocolo. SMB2 mejora bastante el protocolo SMB,
que por la herencia de NETBIOS es un sistema bastante ineficiente. SMB2 es utilizado cuando se
comunican maquinas Windows Vista o Windows 7 entre s, usando SMB1 cuando dichas maquinas se
comunican con sistemas operativos anteriores como XP. Las versiones nuevas de SAMBA (desde la 3.6
soportan SMB2)
SAMBA tambin es capaz de emular las caractersticas de SMB que permiten conectarse a un controlador
de dominio, o incluso puede directamente validar usuarios dentro del dominio, realizando algunas
funciones especficas de los controladores de dominio.
HISTORIA.
Samba fue desarrollado originalmente para Unix utilizando un sniffer o capturador de trfico para
entender el protocolo SMB usando ingeniera inversa. El nombre viene de insertar dos vocales al protocolo
estndar que Microsoft usa para sus redes, el SMB o server message block. En un principio Samba tom
el nombre de smbserver pero tuvieron que cambiarlo por problemas con una marca registrada. El creador
busc en el diccionario de su mquina Unix alguna palabra que incluyera las 3 letras y de ah surgi el
nombre actual.
CARACTERISTICAS.
Samba es una implementacin de una docena de servicios y protocolos, entre los que estn: NetBIOS
sobre TCP/IP (NetBT), SMB (tambin conocido como CIFS), DCE/RPC o ms concretamente, MSRPC, el
servidor WINS tambin conocido como el servidor de nombres NetBIOS (NBNS), la suite de protocolos del
dominio NT, con su Logon de entrada a dominio, la base de datos del gestor de cuentas seguras (SAM), el
servicio Local Security Authority (LSA) o autoridad de seguridad local, el servicio de impresoras de NT y
recientemente el Logon de entrada de Active Directory, que incluye una versin modificada de Kerberos
y una versin modificada de LDAP.
Samba configura directorios Unix y GNU/Linux (incluyendo sus subdirectorios) como recursos para
compartir a travs de la red. Para los usuarios de Microsoft Windows, estos recursos aparecen como
carpetas compartidas normales de red. Los usuarios de GNU/Linux pueden montar en sus sistemas de
archivos las carpetas compartidas en red de mquinas Windows como si fueran dispositivos locales, o
utilizar la orden smbclient para conectarse a ellas directamente.
INSTALACIN.
Es posible que nos encontremos con que SAMBA ya est instalado en nuestra mquina, podemos
comprobarlo fcilmente con la lnea de comando:
CONFIGURANDO SAMBA.
Toda la configuracin de samba se realiza modificando el fichero smb.conf que podemos encontrar
normalmente en /etc/samba. Cada vez que realicemos alguna modificacin en este fichero, tendremos
que reiniciar el demonio samba para que se efecten los cambios, esto lo podemos conseguir con el
comando /etc/init.d/samba restart en el caso de que contemos con un Linux de la familia Deban
(ejecutar esta orden como root).
SMB.CONF
Este fichero contiene secciones y parmetros. Cada seccin comienza con el nombre de la misma entre
corchetes y continua hasta que aparezca el siguiente nombre de seccin. Cada una de las secciones
contiene parmetros, con el formato nombre=valor.
Existe una seccin especial conocida como [global] donde se almacenan parmetros generales. Cada una
de las siguientes secciones especifica un recurso compartido. Existen dos secciones especficas que son
[homes] y [printers], siendo [homes] una seccin que se utiliza para compartir los homes de los usuarios
de Linux y [printers] una seccin desde donde se comparten todas nuestras impresoras.
Existe un comando testparm que simplemente comprueba el fichero smb.conf y nos informa si existe
Los principales parmetros que colocamos en la seccin global son los siguientes:
guest account Nombre de La cuenta de usuario que se usar para introducir usuarios annimos
cuenta en los recursos de samba.
hosts allow Una lista de hosts que pueden conectarse al servidor. Si se omite, se
pueden conectar todos los hosts. Ejemplo: hosts allow = 127.0.0.1
192.168.2.0/24 192.168.3.0/24
hosts deny Una lista de hosts que tienen prohibido conectarse al servidor. Ej:
hosts deny = 0.0.0.0/0
log file Fichero Fichero donde se almacenar el log de samba. (Es aconsejable
consultar el log para detectar posibles errores).
Existen otros parmetros para indicar las interfaces de red que se van a utilizar, nombres de servidores
WINS, etc. Pueden ser consultados en la documentacin de samba.
En esta configuracin, compartimos un recurso con nombre privado, que en realidad es la carpeta
/almacen_jose, donde se puede escribir y donde SOLO podr acceder el usuario jose. Esto lo conseguimos
en primer lugar pasando la seguridad de samba a user, que es la manera recomendada de trabajar con
samba. Con ese cambio obligamos a los usuarios que deseen acceder a samba a que se presenten con su
nombre de usuario y contrasea. Con la clusula valid users le indicamos qu usuarios pueden acceder al
mismo.
Este usuario jose no slo debe ser un usuario creado normalmente en Linux, sino que TAMBIEN debe ser
creado dentro del sistema samba. Esto lo conseguimos con el comando smbpasswd.
smbpasswd a nombre_de_usuario
Una vez que hemos creado al usuario, tanto en Linux como en samba, tenemos que preparar la carpeta
fsica, donde evidentemente debemos hacer que el usuario jose tenga permisos de acceso.
Si queremos que un recurso compartido no sea simplemente accedido por un solo usuario, sino por varios,
tenemos que modificar en el ejemplo anterior el valor del parmetro valid user.
En este ejemplo vemos como en valid users hemos colocado directamente el nombre de 3 usuarios. Como
ya sabemos, estos usuarios deben de existir tanto en Linux (adduser) como en Samba (smbpasswd ).
Los permisos de la carpeta /almacen_varios deben de estar configurados de modo que permita que los 3
usuarios puedan leer y escribir en ella. Lo ms simple es crear un grupo, introducir a los tres usuarios en
el mismo y darle la propiedad a dicho grupo sobre esa carpeta, configurando los permisos de grupo para
que permitan lectura y escritura:
Con esta configuracin, podemos acceder al recurso compartido usando los usuarios jose, juana o paco,
siendo imposible acceder a dicho recurso con cualquier otro usuario.
Podemos mejorar un poco el smb.conf anterior, y en lugar de escribir los nombres de los usuarios, escribir
directamente el grupo donde estn situados dichos usuarios, en nuestro ejemplo el grupo varios. Para
ello, basta con escribir directamente el nombre del grupo precedido por el smbolo de la arroba.
Una seccin especial es [homes] la cual nos permite que los usuarios de Linux entren directamente a sus
directorios home desde la red.
Con el anterior smb.conf conseguimos lo siguiente: Cuando un usuario intente acceder desde la red a
nuestro servidor, samba comprobar si dicho usuario tiene creado un directorio en /home/ con su propio
nombre, si es un usuario reconocido de Linux y si tambin es un usuario creado en samba con smbpasswd.
En caso de ser as, se le permitir el acceso a su carpeta home como si estuviera compartida. De esta
forma, nos ahorramos tener que crear una seccin para cada carpeta home de usuario.
Si no colocamos ningn parmetro path en la seccin homes, samba establecer por defecto el path a
/home/%S (%S es una variable que toma como valor el nombre de usuario que est intentando entrar).
Podemos darle otro valor a path, de forma que estos perfiles se creen en otro sitio.
Para asegurarnos de que solo sea el usuario el que pueda entrar a su directorio home, tambin podemos
poner el parmetro valid user = %S.
Cuando asignamos el valor user al parmetro security, que es el valor recomendado, Samba funciona de
la siguiente manera: Cuando se realiza una conexin a un recurso compartido, pide el nombre de usuario
y contrasea que se est intentando conectar. En caso de que dicho usuario no sea reconocido por el
sistema, directamente deniega el acceso.
Windows por ejemplo (si se configura adecuadamente) es bastante ms permisivo, ya que si no reconoce
a un usuario que intente entrar, lo convierte directamente en invitado y comprueba si la cuenta invitado
tiene derecho a acceder al recurso.
Vamos a configurar Samba para que imite este comportamiento de Windows, y podamos realizar acceso
annimo a recursos compartidos pero manteniendo security = user.
guest account = nobody Le indica a Samba que cuenta de usuario ha de usarse internamente para los
invitados, es decir, los usuarios annimos. Puede ser cualquier cuenta que deseemos, pero obviamente
debe estar creada en el sistema, se suele utilizar nobody porque esta cuenta se suele crear
automticamente con la instalacin del paquete samba.
map to guest = bad user Le indica a Samba que convierta en invitado a cualquier usuario que intente
entrar en nuestro sistema y no sea reconocido. Permite que cuando un usuario desconocido intente
entrar, convirtamos dicho usuario automticamente en guest, que por lo visto en el punto anterior,
realmente lo transforma en el usuario nobody.
Posteriormente en el recurso indicamos que se permite el acceso pblico, y adems que permitimos los
invitados. (En realidad estas opciones son redundantes y tericamente con una de ellas bastara)
Es evidente que la carpeta que deseamos compartir debe tener asignados sus permisos de modo que el
usuario nobody pueda leer o escribir, dependiendo del tipo de acceso que deseemos. Estos permisos
deben coincidir con los permisos que indiquemos para dicho recurso en smb.conf.
Un punto importante es que la cuenta de usuario que usemos para guest account (en nuestro ejemplo
nobody) no debe tener contrasea. Para crear una cuenta sin contrasea en Samba se usa el parmetro
n en smbpasswd.
# smbpasswd an nobody
1) En este ejemplo hemos dado acceso annimo a Carpeta_Publica. Desde la mquina Windows se
tendr acceso directo y annimo a \\equipo\Carpeta_Publica, pero no tendremos acceso directo
y annimo a \\equipo.
2) Si desde una maquina Windows intenta entrar un usuario que da la casualidad que tiene el mismo
nombre que un usuario de nuestro sistema Linux pero con distinta contrasea, no se le aplicar
el parmetro map to guest = bad user por lo que se le denegar el acceso. Esto se puede
solucionar modificando ese parmetro, de la siguiente forma:
Aqu vemos una configuracin tpica, que nos permite compartir las impresoras que YA estn reconocidas
e instaladas en Linux. Como decimos, esta forma de trabajar ya no se recomienda.
No vamos a tratar ms este tema de impresoras en Samba, por que como ya hemos comentado es mucho
ms razonable usar otras soluciones para compartir impresoras, como pueden ser CUPS o el protocolo
directo de impresin por red. Si se desea obtener ms informacin, en la propia documentacin de Samba
se indican muchsimos ms parmetros que estn disponibles a la hora de trabajar con impresoras.
Para acceder a los recursos compartidos por SMB desde una maquina Linux, debemos usar el programa
smbclient. En primer lugar comprobad que tenis instalado dicho paquete, porque no se suele instalar
directamente con el paquete samba.
Para echar un vistazo a nuestra red smb, podemos utilizar el comando smbtree:
El programa smbclient se utiliza directamente desde lnea de comandos. As por ejemplo, para examinar
los recursos compartidos por un equipo, podemos hacer lo siguiente:
El parmetro L de smbclient indica que queremos listar todos los recursos compatibles de un host. En
nuestro ejemplo dicho host es la mquina con nombre XPJOANCADI.
Ante este host, nuestra maquina Linux se va a intentar autentificar con el nombre del usuario que ha
ejecutado la orden smbclient en Linux, que como vemos en el ejemplo es usuario.
Posteriormente, la orden smbclient nos muestra todos los recursos compartidos que dicho host
XPJOANCADI tiene compartidos en red mediante smb. Vemos como al final nos indica todos los equipos
del grupo de trabajo (en nuestro ejemplo, no hay ningn equipo).
Dado que el recurso C1 en Windows solo esta compartido con el usuario joancadi, vemos como en la
orden smbclient le he indicado que use dicho usuario para la conexin (-U).
La contra barra (\) es un smbolo especial en Linux, y no basta con escribirlo directamente, tenemos que
escapar de dicho carcter especial y esto se consigue repitiendo el carcter contra barra. (En resumen,
para escribir en smbolo de comandos una contra barra, tenemos que escribir dos).
Una vez que entramos con smbclient en un recurso compartido, vemos como nos aparece un prompt del
sistema smb: \> indicndonos que a partir de este momento se admiten comandos especiales de smb.
Podemos escribir help para que nos muestre una lista de los comandos que se pueden usar.
Podemos montar directamente un recurso compartido de Windows dentro de nuestro servidor Linux, de
modo que aparezca en nuestro sistema como un directorio local.
Para realizar el montaje de un recurso compartido directamente desde nuestra lnea de comandos
utilizaremos el comando mount, pero anteriormente debemos tener instalado el paquete cifs-utils que
nos permitir trabajar directamente con los recursos smb.
En el ejemplo anterior vemos como en lugar del nombre del pc hemos usado en la URL la direccin IP del
equipo. Esto es necesario hacerlo si el nombre del equipo no se reconoce en la red cifs. (Esto suele pasar
muy frecuentemente al principio de configurar la red, con los minutos termina funcionando todo bien).
Vemos tambin como usamos el comando mount indicando como tipo de sistema de ficheros cifs.
Si el sistema nos indica que no tenemos permiso para acceder al recurso, normalmente ser problema de
la autentificacin, es decir, del nombre de usuario y contrasea que hemos indicado que no son
reconocidos por el sistema al que pertenece el recurso compartido.
Si el sistema nos indica que no se encuentra el recurso o servidor remoto, normalmente el problema
estar en el nombre del equipo Windows o en el nombre del recurso
Como vemos en el ejemplo, un fallo de este sistema es que tenemos que escribir directamente en la orden
el nombre de usuario y el password, y esto es francamente peligroso y un fallo de seguridad bastante
peligroso. Una forma de remediar esto consiste en utilizar un fichero de credenciales, de la siguiente
forma:
Como vemos, indicamos en la opcin o que en lugar de escribir directamente el username y el password,
vamos a utilizar un fichero de credenciales que en nuestro caso hemos creado en /root con el nombre
paso. (En este ejemplo vemos como sistema de ficheros hemos indicado smbfs en lugar de cifs, esto es
como se haca antiguamente y ya no es vlido).
Dicho fichero tendr sus permisos establecidos de forma que slo podr ser ledo por el usuario root, con
lo cual nuestras contraseas y nombres de usuario no podrn ser ledas ni vistas por usuarios normales
del sistema.
Para comprobarlo, podemos ejecutar un mount a para indicar que se monten las unidades en este
momento, y no cuando reiniciemos la mquina.