ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 CONTENIDO SAMBA .......................................................................................................................................................... 2 INTRODUCCIÓN. ....................................................................................................................................... 2 HISTORIA. ............................................................................................................................................. 2 CARACTERISTICAS. ................................................................................................................................ 3 INSTALACIÓN. ........................................................................................................................................... 3 CONFIGURANDO SAMBA. ......................................................................................................................... 3 SMB.CONF ............................................................................................................................................ 3 PUBLICACION DE CARPETAS DE FORMA ANONIMA. NO RECOMENDADA. .............................................. 4 PUBLICACION DE UNA CARPETA PARA UN UNICO USUARIO. .................................................................. 6 PUBLICACIÓN DE CARPETAS CON ACCESO RESTRINGIDO A VARIOS USUARIOS. ..................................... 7 PUBLICACION DE LAS CARPETAS HOME DE CADA USUARIO. ................................................................... 9 PUBLICACION DE CARPETAS ANONIMAS CON SEGURIDAD HABILITADA. .............................................. 10 PUBLICACIÓN DE IMPRESORAS. ............................................................................................................. 12 ACCESO A RECURSOS COMPARTIDOS COMO CLIENTE........................................................................... 13 MONTANDO RECURSOS COMPARTIDOS EN NUESTRA MAQUINA LINUX. ............................................. 16 Servidor SAMBA. Página: 1 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 SAMBA INTRODUCCIÓN . 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 también 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. También introdujo novedades como los enlaces duros, enlaces simbólicos, ficheros de mayor tamaño, etc. Esta modificación de Microsoft recibió el nombre de CIFS (Common Internet File System) pero no se suele utilizar mucho, dado que no fue aprobada como estándar. 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ó ingeniería inversa sobre SMB por parte de Sun Microsystems. A causa de la importante difusión 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 interactúen 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 también es capaz de emular las características de SMB que permiten conectarse a un controlador de dominio, o incluso puede directamente validar usuarios dentro del dominio, realizando algunas funciones específicas de los controladores de dominio. HISTORIA. Samba fue desarrollado originalmente para Unix utilizando un sniffer o capturador de tráfico para entender el protocolo SMB usando ingeniería inversa. El nombre viene de insertar dos vocales al protocolo estándar 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 máquina Unix alguna palabra que incluyera las 3 letras y de ahí surgió el nombre actual. Servidor SAMBA. Página: 2 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 CARACTERISTICAS. Samba es una implementación de una docena de servicios y protocolos, entre los que están: NetBIOS sobre TCP/IP (NetBT), SMB (también conocido como CIFS), DCE/RPC o más concretamente, MSRPC, el servidor WINS también 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 versión modificada de Kerberos y una versión modificada de LDAP. Samba configura directorios Unix y GNU/Linux (incluyendo sus subdirectorios) como recursos para compartir a través 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 máquinas Windows como si fueran dispositivos locales, o utilizar la orden smbclient para conectarse a ellas directamente. INSTALACIÓN. Es posible que nos encontremos con que SAMBA ya está instalado en nuestra máquina, podemos comprobarlo fácilmente con la línea de comando: dpkg –l | grep samba Los paquetes que tenemos que instalar son los siguientes: • samba. El paquete samba, instalará también el paquete samba-common • cifs-utils. Permite utilizar los recursos samba directamente como un sistema de ficheros. • smbclient. Permite conectar el sistema a un recurso compartido, usándolo de forma parecida al protocolo de ftp. CONFIGURANDO SAMBA. Toda la configuración de samba se realiza modificando el fichero smb.conf que podemos encontrar normalmente en /etc/samba. Cada vez que realicemos alguna modificación en este fichero, tendremos que reiniciar el demonio samba para que se efectúen 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 Debían (ejecutar esta orden como root). SMB.CONF Este fichero contiene secciones y parámetros. Cada sección comienza con el nombre de la misma entre corchetes y continua hasta que aparezca el siguiente nombre de sección. Cada una de las secciones contiene parámetros, con el formato nombre=valor. Existe una sección especial conocida como [global] donde se almacenan parámetros generales. Cada una de las siguientes secciones especifica un recurso compartido. Existen dos secciones específicas que son [homes] y [printers], siendo [homes] una sección que se utiliza para compartir los homes de los usuarios de Linux y [printers] una sección desde donde se comparten todas nuestras impresoras. Servidor SAMBA. Página: 3 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 Existe un comando testparm que simplemente comprueba el fichero smb.conf y nos informa si existe Los principales parámetros que colocamos en la sección global son los siguientes: Parámetro Valores Explicación workgroup El nombre del grupo de trabajo al que se conectará nuestro equipo. netbios name El nombre netbios de nuestro equipo. security user/share Especifica como samba autentifica principalmente a los usuarios. El valor user se recomienda cuando el equipo Linux y los equipos Windows tengan muchos identificadores de usuarios iguales, mientras que share se recomienda cuando existan pocos identificadores comunes. En general, se recomienda dejar el valor por defecto que es user. guest account Nombre de cuenta La cuenta de usuario que se usará para introducir usuarios anónimos 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 parámetros para indicar las interfaces de red que se van a utilizar, nombres de servidores WINS, etc. Pueden ser consultados en la documentación de samba. PUBLICACION DE CARPE TAS DE FORMA ANONIMA . NO RECOMENDADA. Para crear un servidor de samba que permita acceso anónimo a los recursos compartidos, simplemente tenemos que darle al parámetro global security el valor share, de modo que nuestro servidor no exigirá que los usuarios que se quieran conectar tengan que autentificarse. Veamos el siguiente fichero de configuración: Servidor SAMBA. Página: 4 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 En este caso estamos creando un recurso compartido con el nombre datos en nuestro grupo de trabajo ASIR. Este recurso aparecerá compartido por la maquina con nombre equipo. La carpeta datos en realidad será la carpeta de nuestro Linux /almacen, que debe de existir evidentemente, y además debe tener permisos para que los usuarios anónimos puedan acceder a dicha carpeta. Además, en el fichero de configuración anterior especificamos que los usuarios solo podrán leer la carpeta (read only). Con el parámetro public indicamos que permitimos que los usuarios anónimos puedan acceder a la carpeta. Con estas órdenes, crearíamos la carpeta /almacen que vamos a compartir, y daríamos permisos para que todos los usuarios pudieran leer y escribir en dicha carpeta. Fijaros como aunque aquí indicamos que se pueda leer y escribir, los usuarios solo podrán leer, ya que lo hemos indicado así en el fichero smb.conf. Esta forma de crear un servidor anónimo no es recomendable, ya que tenemos muy poco control sobre todo el proceso. Posteriormente veremos una forma de realizar esto mismo, de forma mucho más controlada. Servidor SAMBA. Página: 5 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 PUBLICACION DE UNA C ARPETA PARA UN UNICO USUARIO. En esta configuración, compartimos un recurso con nombre privado_jose, que en realidad es la carpeta /almacen_jose, que no es de solo lectura, que no es publica, y donde SOLO podrá acceder el usuario jose. Esto lo conseguimos pasando la seguridad de samba de share 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 contraseña. Con la cláusula valid users le indicamos al recurso que usuarios pueden acceder al mismo. Este usuario jose no sólo 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 física, donde evidentemente debemos hacer que el usuario jose tenga permisos de acceso. Servidor SAMBA. Página: 6 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 PUBLICACIÓN DE CARPE TAS CON ACCESO RESTRINGIDO A VARIOS USUARIOS. i 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 parámetro 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 más 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: Servidor SAMBA. Página: 7 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 Con esta configuración, podemos acceder al recurso compartido privado_varios 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 están situados dichos usuarios, en nuestro ejemplo el grupo varios. Para ello, basta con escribir directamente el nombre del grupo precedido por el símbolo de la arroba. Servidor SAMBA. Página: 8 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 PUBLICACION DE LAS C ARPETAS HOME DE CADA USUARIO. Una sección 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 también 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 sección para cada carpeta home de usuario. Si no colocamos ningún parámetro path en la sección 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, también podemos poner el parámetro valid user = %S. Servidor SAMBA. Página: 9 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 PUBLICACION DE CARPE TAS ANONIMAS CON SEGURIDAD HABILITADA. Cuando asignamos el valor user al parámetro security, que es el valor recomendado, Samba funciona de la siguiente manera: Cuando se realiza una conexión a un recurso compartido, pide el nombre de usuario y contraseña 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 más 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 anónimo a recursos compartidos pero manteniendo security = user. Los parámetros importantes de la anterior configuración son: guest account = nobody Le indica a Samba que cuenta de usuario ha de usarse internamente para los invitados, es decir, los usuarios anónimos. Puede ser cualquier cuenta que deseemos, pero obviamente debe estar creada en el sistema, se suele utilizar nobody porque esta cuenta se suele crear automáticamente con la instalación 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 automáticamente 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 público, y además que permitimos los invitados. (En realidad estas opciones son redundantes y teóricamente con una de ellas bastaría) 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 contraseña. Para crear una cuenta sin contraseña en Samba se usa el parámetro n en smbpasswd. Servidor SAMBA. Página: 10 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 # smbpasswd –an nobody Cosas a tener en cuenta al realizar esta práctica: 1) En este ejemplo hemos dado acceso anónimo a Carpeta_Publica. Desde la máquina Windows se tendrá acceso directo y anónimo a \\equipo\Carpeta_Publica, pero no tendremos acceso directo y anónimo 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 contraseña, no se le aplicará el parámetro map to guest = bad user por lo que se le denegará el acceso. Esto se puede solucionar modificando ese parámetro, de la siguiente forma: Servidor SAMBA. Página: 11 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 PUBLICACIÓN DE IMPRESORAS. Samba simplemente es un intermediario entre el sistema de impresión de Linux, y el sistema de impresión de Windows. Vamos a ver en primer lugar el modo “tradicional” de trabajar con impresoras en Samba, y posteriormente veremos un método más moderno y funcional utilizando CUPS. (Common UNIX Printing System). Aquí vemos una configuración típica, que nos permite compartir las impresoras que YA estén reconocidas e instaladas en Linux. Como decimos, esta forma de trabajar ya no se recomienda. No vamos a tratar más este tema de impresoras en Samba, por que como ya hemos comentado es mucho más razonable usar otras soluciones para compartir impresoras, como pueden ser CUPS o el protocolo directo de impresión por red. Si se desea obtener más información, en la propia documentación de Samba se indican muchísimos más parámetros que están disponibles a la hora de trabajar con impresoras. Servidor SAMBA. Página: 12 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 ACCESO A RECURSOS CO MPARTIDOS COMO CLIEN TE. Para acceder a los recursos compartidos por SMB desde una maquina Linux, debemos usar el programa smbclient. En primer lugar comprobad que tenéis 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 línea de comandos. Así por ejemplo, para examinar los recursos compartidos por un equipo, podemos hacer lo siguiente: El parámetro –L de smbclient indica que queremos listar todos los recursos compatibles de un host. En nuestro ejemplo dicho host es la máquina 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. Servidor SAMBA. Página: 13 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 El host XPJOANCADI responde a dicho intento de conexión, preguntándonos la contraseña de dicho usuario, como vemos por pantalla. 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 ningún equipo). Intentemos ahora conectarnos directamente al recurso compartido C1 por ejemplo: 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 conexión (-U). La contra barra (\) es un símbolo especial en Linux, y no basta con escribirlo directamente, tenemos que “escapar” de dicho carácter especial y esto se consigue repitiendo el carácter contra barra. (En resumen, para escribir en símbolo 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: \> indicándonos 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. Servidor SAMBA. Página: 14 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 Algunos de los comandos más usados son: ls cd lcd get put Servidor SAMBA. – Muestra un listado del recurso compartido remoto o – Cambia de directorio en el recurso compartido remoto o – Cambia de directorio en nuestro ordenador local o – Descarga un fichero del recurso compartido remoto al equipo local – Envía un fichero del equipo local al recurso compartido remoto Página: 15 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 MONTANDO RECURSOS COMPARTIDOS EN NUESTRA MAQUINA LINUX. 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 línea de comandos utilizaremos el comando mount, pero anteriormente debemos tener instalado el paquete cifs-utils que nos permitirá trabajar directamente con los recursos smb. La forma de utilizar el comando mount es: mount –t cifs –o username=user,password=pass \\\\NOMBRE-PC\\NOMBRE-RECURSO carpeta Carpeta es el directorio donde montaremos el recurso compartido. Es necesario indicar el nombre de usuario y contraseña ya que en caso contrario nos lo pedirá. En el ejemplo anterior vemos como en lugar del nombre del pc hemos usado en la URL la dirección 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 también 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 autentificación, es decir, del nombre de usuario y contraseña 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 opción –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 hacía antiguamente y ya no es válido). Dicho fichero tendrá sus permisos establecidos de forma que sólo podrá ser leído por el usuario root, con lo cual nuestras contraseñas y nombres de usuario no podrán ser leídas ni vistas por usuarios normales del sistema. Servidor SAMBA. Página: 16 de 17 ADMINISTRACIÓN DE SISTEMAS OPERATIVOS. 2º ASIR. CURSO 14/15 El ejemplo anterior es perfecto cuando queremos montar un recurso momentáneamente, pero no funciona si queremos un montaje permanente, puesto que al abrir y cerrar sesión nuestro recurso desaparecerá. Para que se mantenga en el tiempo, tenemos que añadir una línea en el fichero /etc/fstab indicando en dicha línea que queremos realizar el montaje. Para comprobarlo, podemos ejecutar un mount –a para indicar que se monten las unidades en este momento, y no cuando reiniciemos la máquina. Servidor SAMBA. Página: 17 de 17