sábado, 28 de julio de 2012

Montando nuestro propio servidor (IV)


-->
De como montar un servidor de archivos y otras cosillas....

Aprovecho mis últimos días de vacaciones. El mes que viene estaré bastante liado, y no sé cuándo podré terminar la serie....

-->
Continuamos la serie de nuestro querido server, realizando el montaje del software necesario para tener una servidor de archivos en red local, que sea capaz de compartir las carpetas que deseemos para cualquier cliente de red. El software necesario para realizarlo es, como muchos de vosotros sabéis, SAMBA.

-->
Para los que no lo sabéis, SAMBA es la implementación libre de los protocolos de compartición de archivos de.... Microsoft Windows.

-->
¡Toma ya! Ahora vas y se lo cuentas a los que queremos que dejen el lado oscuro..... Pues si, señores, es lo que hay. SAMBA se creó a base de ingeniería inversa, es decir, utilizando sniffers en una red local para entender como funcionaba el protocolo de compartición en red SMB de Windows (¿alguien nota la similitud de los nombres?....¿SMB – SAMBA?).

-->
SAMBA es la implementación libre de una serie de servicios y protocolos, entre ellos NetBIOS over TCPIP (NetBT), SMB (ó CIFS), DCE-RPC (llamada a procedimiento remoto), WINS (sistema de nombres para NetBIOS) y, lo que considero más importante e increíble de conseguir, todos los protocolos de dominio de NT, entre ellos Logon para entrada a dominio, SAM (cuentas de seguridad de Windows), y hasta el logon de entrada de Active Directory de Microsoft. Impresionante. Ahora sí podemos vacilarles a los del lado oscuro.....

SAMBA configura directorios como recursos para compartir en la red. Para los usuarios de Windows, estos recursos son carpetas normales de red. Los usuarios de Linux pueden montar estas unidades como si fueran dispositivos locales. Cada directorio puede tener diferentes permisos de acceso, pero eso si, los permisos de SAMBA no se supeditan a los permisos de los archivos en nuestro server. Osea, que aunque creemos un recurso compartido a partír de un directorio en SAMBA, si ese directorio no tiene permisos de lectura nada más que para root, nadie más podrá leerlo.

-->
Y lo mejor de todo, la configuración de todo esto se logra editando un solo archivo, ubicado en /etc/samba/smb.conf.
Y lo más increíble para mí. Utilizando SAMBA, podemos conseguir que nuestro Debian Server..... ¡sea PDC (Primary Domain Controler) de una red Windows!

Y aquí sí que me planto. Me costó más montar mi primer dominio en MS W2K3 que aprenderme el Ora pro nobis peccatoribus cuando era monaguillo, así que me niego en rotundo a volver a empezar, ahora con SAMBA. Entiendo que ninguno de nosotros quiere/necesita tener un dominio con PDC, Active Directory y el sursuncorda montado en su casa para tres o cuatro ordenadores que habrá como mucho. Pero si no es así, invito amablemente a alguno de los lectores de este fantástico blog a que se meta en faena.... A mí no me pilláis en otra....

-->
En fín, volviendo a lo nuestro.... y .... ¿cuanta paquetería va a hacer falta para nuestro servidor de archivos? Pues tanta como cabe en la siguiente línea:

-->
apt-get install samba samba-common smbclient samba-doc smbfs


-->

¿Recordáis en el post anterior la creación de los usuarios ftp y proftpd cuando montamos nuestro ftp?. Recuerdo que os dije para qué servirían y se quedó la explicación en el limbo. Realmente sirven para poco, ya que no hemos montado un ftp anónimo, así que no voy a volver sobre lo
--> mismo, pero también montó el grupo nogroup, y ese nos va a servir ahora con nuestro servidor de archivos. Añadiremos un usuario a nuestro server: nouser. Lo añadiremos sin directorio home, ya que no será utilizado por ningún usuario “real”:

-->
useradd‭ ‬-g nogroup‭ ‬-d‭ ‬/home/nouser nouser


-->
Vamos a ir configurando ahora nuestro SAMBA. Editamos el archivo de configuración:

-->
nano /etc/samba/smb.conf

-->
En la sección “Global Settings” configuramos el siguiente valor:

workgroup = “LMDE-COSILLAS”

(Frannoe, que no se diga que no te aprecio, ¿eh?)

-->
Podéis utilizar el que queráis, pero todas las máquinas deberán tener el mismo grupo de trabajo, las que sean Linux tendrán que tener en su SAMBA el mismo grupo, y las que sean Windows tendrán que estar definido en Mi PC/Propiedades. Tener en cuenta que el grupo de trabajo en Windows tiene que tener un nombre NetBIOS válido.

-->
[mode pregunta tímida ON]
Y.... ¿eso qué es?
[mode pregunta tímida OFF]

[mode resignación ON]
Vaaaaale,,, Lo explico para el que no lo sepa.....
Un nombre NetBIOS consta de 16 caracteres. Los 15 primeros corresponden al nombre de la computadora y el último, el byte decimosexto, es un número hexadecimal de 8 bits que corresponde al tipo específico del nombre (ni caso a esto último, son pajillas mentales de los desarrolladores.... no es más que para fastidiar. Vosotros centraros en los 15 primeros.). Los nombres de computadora pueden constar de un máximo de 15 caracteres y deben respetar las siguientes reglas:
  • Se permite el uso de los siguientes caracteres: A – Z, a – z, 0-9 y el guión (-).
  • Los caracteres primero y último deben ser alfanuméricos (A – Z, a – z o 0-9).
Así que a nadie se le ocurra poner como grupo de trabajo “Linux es mejor” porque ese nombre no cumple los estándares NetBIOS.
[mode resignación OFF]

-->
Seguimos configurando. Buscamos la sección ### Networking ###. Tenemos que establecer la tarjeta de red y la dirección de red. En nuestro caso, y hasta que montemos el gateway en nuestro server (lo prometo, el próximo post va dedicado a ello), descomentamos la línea y la dejamos así:



-->
Buscamos la sección ### Authentication ###.Aquí podemos establecer el modo de acceso al servidor de archivos. La línea security es la clave de todo. Si la dejamos como user, podremos loguearnos en el servidor de archivos con nuestras cuentas de linux, pero esas cuentas tendrían que existir en el servidor. Para evitar esto, descomentamos la línea, y le cambiamos el valor: security = share.


-->
Al final de esta sección, vamos a añadir las siguientes líneas:

guest account = nouser (éste es el usuario que creamos antes)
guest ok = yes
guest only = no
read only = no


-->
En la sección Share Definitions vienen predefinidos una serie de recursos que podemos descomentar y utilizar. En concreto, el CDROM y la impresora, son muy útiles. Y ahora vamos a crear nuestro propio recurso de red en el server. Tecleamos al final del archivo:

[Frannoe] (en homenaje a nuestro maestro, of course... Cada uno que le ponga el que quiera)

path‭=‬/shared
browseable = ‬yes
public‭ = ‬yes
writeable‭= ‬yes
read only = ‬no (aunque parezca redundante con el anterior, es conveniente ponerlo)
guest ok‭ = ‬yes
guest only‭ = ‬no


-->
Guardamos cambios y salimos. Creamos el directorio /shared y aplicamos permisos:

mkdir /shared
chmod 777 /shared

y reiniciamos samba: /etc/init.d/samba restart 


-->
No da ningun error, ¿no?. Pues voy a coger el ordenata de mi mujer, con su WXp y a ver qué pasa:

Lo primero, cambiar el grupo de trabajo de Windows:


Y ahora, podemos explorar la red:





o bien mapear directamente la unidad, y acceder a ella desde Mi Pc:



-->
Et voilà.... Vamos ahora desde un cliente Linux. Lo primero, instalar SAMBA en nuestro cliente:

sudo aptitude install samba4-clients


-->
…. y sus dependencias, y es tan sencillo como acceder a nautilus, y explorar la red....




Et voilà de nuevo..... Como véis, Nautilus monta directamente la unidad.
-->
[Frannoe dixit]
Pero.... si eso no es lo que yo quería..... Que yo quiero mi propio recurso de red, y para mi hija Claudia otrooooooo....

Vaaaale. Como te gusta que te lo den todo hecho..... Pues entonces, creamos nuestros usuarios, al igual que el nouser descrito, sin /home propio. Ahora nos pedirá la contraseña para el usuario:

adduser‭ ‬-shell /bin/false -no-create-home frannoe
adduser‭ ‬-shell /bin/false -no-create-home claudia


Y ahora creamos los usuarios de SAMBA. Se le pone la misma contraseña que tiene en Linux.

smbpasswd -a frannoe
smbpasswd -a claudia

La estructura de carpetas a crear y sus permisos seria la siguiente:

cd /shared
mkdir frannoe
mkdir claudia
chmod 777 frannoe/
chmod 777 claudia/
chown frannoe:frannoe frannoe/
chown claudia:claudia claudia/



Y el archivo de configuración quedaria de la siguiente manera:

En la sección #### Authentication ####

security = user

Al final del archivo añadiríamos:

[frannoe]

path = /shared/frannoe
browseable = yes
writeable = yes
readonly = no
valid users = frannoe

[claudia]
path = /shared/claudia
browseable = yes
writeable = yes
readonly = no
valid users = claudia

y reiniciamos samba: /etc/init.d/samba restart

Y eso es todo. Nos conectamos igual que antes... Y con esto termino por hoy. Para el próximo capítulo, convertiremos nuestro server en el Gateway de la red local. Ir buscando una segunda tarjeta de red que montarle a vuestro server.... ¡Animo, que ya falta poco!

7 comentarios:

  1. Gracias maestro!!! me has aclarado algunas cosas yo tengo un servidor ubuntu 'el proximo lo hare en debian (ya lo estoy probando)' donde trabajo y lo tengo como gateway pero utilice "Firestarter" para configurar las dos tarjetas de red me gustaria aprender mas sobre iptables

    ResponderEliminar
  2. No sé José si crear una pestaña sólo para este Super-Tutorial. Así quedaría todo más al alcance de todos sin tener que ir buscando los distintos capítulos por el blog.
    Estos quedarían duplicados (no importa mejor, que mejor), es decir, los publicas normalmente y yo los copio y los llevo a la pestaña correspondiente, igual que hice con las soluciones de MATE.

    Tú que opinas???

    Como siempre José...muchas gracias!!!

    ResponderEliminar
    Respuestas
    1. Por supuesto, Frannoe, lo que tú decidas me parece bien.

      Saludos

      Eliminar
    2. Hecho, ya ha sido añadida...
      Muchas gracias!!!

      Eliminar
  3. No sé que opinará José ... pero Frannoe, si puedes hacer eso hazlo jejeje, no es que seamos flojos para buscar, pero de seguro compartes el criterio conmigo de que una web es funcional cuando el usuario se puede mover cómodamente por ella.

    Excelente clase sobre Server José M. aunque no puedo implementarlo por falta de un PC disponible para tal fin, no pierdo detalle de lo que explicas jejeje.

    Saludos a ambos.

    ResponderEliminar
  4. Bien.. muchas gracias... por el tutorial...
    pero ahi te van un par de preguntas...
    usas la version de samba 3.6.x?
    si esto es asi... como logras compartir una impresora para que desde windows se use... sin usuarios ni nada...?
    desde que samba esta en estas ultimas versiones.. ya nunca mas pude hacerlo
    asi... simplemente.....hay un bug abierto en ubuntu...pero en Debian aun no encontre nada...

    Saludos y Gracias

    ResponderEliminar
  5. Hola Fabrizio.

    La versión que está actualmente instalada en el server Cosillas que da nombre a la serie es la 3.5.6. Si sigues la serie desde el principio, verás que está instalado Debian Squeeze, y es la versión que está distribuida en sus repositorios. Como tú bien indicas, no hay ningún problema en esta versión....
    Si tienes la versión 3.6.x instalada, es porque tus repos estan apuntando a squeeze-backports, wheezy o sid.
    No digo que sea mala opción, pero ocurren estas cosas....
    En cuanto a Ubuntu..... ¿quién sabe realmente de qué repos de Debian cuelgan sus repos?
    Lamento no poder ayudarte. Imagino que cuando Wheezy pase a Stable, se resolverán esos problemas que comentas.

    Saludos

    ResponderEliminar