Samba: Servidor Independiente en 1 2 3

¡Hola Amigos!. Les traigo un apretado resumen de como implementar un servidor independiente en Debian utilizando solamente la Consola y un Editor de Texto.

Paso previo para darnos cuenta de las limitaciones y/o complejidades de las interfaces gráficas que existen para implementar un servicio similar, y que invito a probarlas.

No estamos obligando a nadie a que use el método aquí dado. Sólo compartimos nuestra poca experiencia al respecto. Muy personalmente opino que es más sencillo compartir carpetas en Linux mediante la consola y un editor de texto.

Existen muchos artículos en la web sobre como utilizar herramientas gráficas tales como System-Config-Samba en Ubuntu, SWAT, Gadmin-Samba, Zentyal-Samba en Ubuntu, etcétera.

Recomendamos las busquen, instalen, usen y estudien, y luego comparen con el sencillo método aquí propuesto. Como decimos en Cuba, Saque Usted sus propias conclusiones.

El método se puede utilizar para cualquier equipo donde se ejecute Debian, sea una máquina de escritorio o un servidor.

Cualquier duda, lea el artículo anterior «Samba: Servidor Independiente en Debian» o consulte la documentación.

Veremos:

  • Red en el Hogar
  • 1.- Instalamos y configuramos Samba
  • 2.- Creamos los usuarios en nuestro equipo y los adicionamos a la base de datos de usuarios de Samba.
  • 3.- Creamos los directorios a compartir y los reflejamos en el archivo /etc/samba/smb.conf.

En el ejemplo crearemos los usuarios de forma que NO puedan iniciar una sesión local en nuestro equipo. También los crearemos sin carpeta personal. Además explicamos el porqué NO usamos pdbedit para adicionarlos a la base de datos de usuarios de Samba.

Red en el hogar

Al menos una de las PCs tendrá Linux instalado :-), y más específicamente Debian. Para el ejemplo escogeremos la pc-hijo, pues el Hijo, que se llama Pepito (Jaimito en otras latitudes) es cardíaco al Software Libre y está cursando estudios al respecto. A cada rato discute con el Padre sobre las ventajas del SWL, pero éste último generalmente le dice «Tengo más experiencia que tu, y eso de Libre… no me convence.». Entonces el Hijo le responde «Padre, recuerda que tu Windows 7 es una copia pirata…». Nada, cosas de familia. 

Equipos: pc-madre, pc-padre, pc-hija y pc-hijo
Subnet: 192.168.1.0/255.255.255.0
Grupo de Trabajo: CASA
Usuarios: madre, padre, hija e hijo

Los siguientes datos que servirán para resolver los nombres en la red, los debemos adicionar al archivo hosts en cada uno de los equipos. En el caso de Linux el archivo es /etc/hosts, mientras que en los Windows usualmente está en C:\Windows\System32\Drivers\etc\hosts.

192.168.1.10 pc-madre
192.168.1.15 pc-padre
192.168.1.20 pc-hija
192.168.1.25 pc-hijo

De esa forma nos ahorraremos instalar y configurar un DNS. No obstante, el que quiera lo puede hacer mediante la guía «DNS Maestro Primario….».

El Grupo de Trabajo en el equipo con Debian lo declararemos en el archivo /etc/samba/smb.conf. En Windows, se declara en la Propiedades de MiPc. Las direcciones IP de cada equipo con Windows, se declaran en las Propiedades de la Conexión de Red.

Para comprobar que hasta aquí todo funciona bien, en cualquier equipo ejecutamos ping nombre-pc-remota y el equipo remoto debe devolver la solicitud. Damos por sentado que conocemos como hacer una pequeña red hogareña. El Cómo se Hace no es objetivo de éste post. Pueden preguntar a amigos que ya lo sepan. Solo dimos los tips esenciales.

1.- Instalamos y configuremos Samba

:~# aptitude install samba smbclient
:~# cp /etc/samba/smb.conf /etc/samba/smb.conf.original
:~# dpkg-reconfigure samba

samba-06-01

dpkg-reconfigure samba-common

samba-06-02

samba-06-03

samba-06-04

:~# testparm
:~# service samba restart
:~# smbclient -L localhost -U

:~# smbclient -L localhost -U%
Domain=[CASA] OS=[Unix] Server=[Samba 3.6.6]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (pc-hijo server)
Domain=[CASA] OS=[Unix] Server=[Samba 3.6.6]

    Server               Comment
    ---------            -------
    PC-HIJO              pc-hijo server

    Workgroup            Master
    ---------            -------
    CASA                 PC-HIJO

Nota: Si no obtiene de inmediato la salida anterior correctamente, espere unos minutos. También, sino existe un servidor WINS en la red, edite el archivo /etc/samba/smb.conf y elimine el comentario de la línea # wins support = no y déjela así: wins support = yes. Después ejecute como el usuario root: testparm y a continuación service samba restart.

2.- Creamos los usuarios en nuestro equipo y los adicionamos a la base de datos de usuarios de Samba.

adduser --no-create-home --shell /bin/false padre
adduser --no-create-home --shell /bin/false madre
adduser --no-create-home --shell /bin/false hijo
adduser --no-create-home --shell /bin/false hija

Si quieren comprobar la no creación de las carpetas personales ejecuten updatedb y a continuación locate padre o locate madre. Si también quieren comprobar si pueden iniciar sesión en el equipo local los usuarios creados, traten de hacerlo directamente o mediante ssh.

¿Por qué no usamos pdbedit para adicionar los usuarios del equipo a Samba?.

Si ejecutamos man pdbedit, y leemos sobre la opción -a|–create se explica muy bien que añade usuarios a Samba, pero que NO llama al Script de Sincronización de Contraseñas UNIX. Además, pdbedit siempre debe ser invocado por el usuario root o con sus permisos.

Si en el archivo principal de configuración de Samba /etc/samba/smb.conf está declarado unix password sync = yes, que es el parámetro por defecto, pdbedit sólo actualizará los datos en la base de datos de usuarios de Samba y NO lo hará en la base de datos del equipo, o sea en el archivo /etc/shadow.

Un poquito técnico pero es así. Sin embargo, «smbpasswd» SI añade al usuario y sincroniza su contraseña de inmediato, mediante el Script de Sincronización. Usemos pues smbpasswd para no enredarnos en las patas de los caballos.  Nuestro primer usuario a añadir a Samba es root.

smbpasswd -a root
smbpasswd -a padre
smbpasswd -a madre
smbpasswd -a hijo
smbpasswd -a hija

Ahora SI usaremos el comando pdbedit para comprobaciones. Para más información ejecute man pdbedit. No podemos dar todas las respuestas en un post o en toda una serie de ellos. Samba es Muy Grande en verdad.

:~# pdbedit -L
root:0:root
madre:1002:
hija:1004:
padre:1001:
hijo:1003:
:~# pdbedit -Lv

Por conveniencia, adicionamos a todos los usuarios creados al grupo users. Muy conveniente para carpetas públicas con permisos de sólo lectura o de lectura/escritura. El grupo users es un comodín.

:~# adduser madre users
:~# adduser hija users
:~# adduser padre users
:~# adduser hijo users 
:~# less /etc/group | grep users 

users:x:100:padre,madre,hijo,hija

Hasta aquí todo está Ok en relación a la creación de usuarios.

3.- Creamos los directorios a compartir y los reflejamos en el archivo /etc/samba/smb.conf

Básicamente es lo mismo que lo publicado en el artículo anterior.

Ejemplo 1: Queremos compartir la carpeta /home/hijo/musica para todos los usuarios de la casa. El permiso será de sólo lectura. Ante todo creamos la carpeta /home/hijo/musica y configuramos su propietario y permisos de ser necesarios. Como el usuario hijo ejecutamos:

mkdir /home/hijo/musica
ls -l /home/hijo | grep musica

Para editar el archivo de configuración de Samba con permisos de root, presionamos ALT + F2 y ejecutamos gksu gedit /etc/samba/smb.conf, tecleamos la contraseña del root, y adicionamos lo siguiente al final del archivo:

[pc-hijo-musica]
        comment         = Carpeta personal de musica
        path            = /home/hijo/musica
        read only       = Yes 
        valid users     = @users
        read list       = @users

Después de las modificaciones al archivo, ejecutamos testparm como el usuario hijo y recargamos el servicio como root. También podemos ejecutar ambos comandos como root:

testparm
service samba reload

Para comprobar el servicio recién configurado lo podemos hacer mediante la ejecución del siguiente comando en el propio equipo:

smbclient -L localhost -U%

Ejemplo 2: Queremos compartir la carpeta /home/hijo/musica para todos. Los permisos serán de lectura/escritura para hijo y de sólo lectura para el resto de la familia agrupados en el grupo users. No tenemos necesidad de modificar el propietario o los permisos en la carpeta. Sólo cambiamos un poco la configuración del recurso compartido en el archivo smb.conf.

[pc-hijo-musica]
        comment         = Carpeta personal de musica
        path            = /home/hijo/musica
        read only       = No
        valid users     = @users
        write list      = hijo
        read list       = @users

Ejemplo 3: El padre de Pepito es cardíaco a las series de acción y ya tiene su disco duro al tope. Le pidió a su hijo que le dejara un espacio en su máquina para él poder llenarlo con las series, y que también sea accesible a toda la familia.

Pepito accedió, por supuesto, pues así le puede pedir a su papá que le compre otro disco duro de 2 teras, lo cual es su sueño. Seguro que Pepito chantajea al padre con el asunto de que le ahorró unos cuantos pesos con la instalación del Windows 7 pirata. 

Si ejecutamos como root:

mkdir /home/hijo/series
chown -R root:users /home/hijo/series
chmod -R g+ws /home/hijo/series
ls -l /home/hijo | grep series

Para editar el archivo de configuración de Samba con permisos de root, presionamos ALT + F2 y ejecutamos gksu gedit /etc/samba/smb.conf, tecleamos la contraseña del root, y adicionamos lo siguiente al final del archivo:

[pc-hijo-series]
        comment         = Las Series de Papá
        path            = /home/hijo/series
        read only       = No
        valid users     = @users
        write list      = padre, hijo
        read list       = @users
    force create mode   = 0660
   force directory mode = 0770

Inmediatamente comprobamos la sintaxis básica del smb.conf mediante testparm y recargamos el servicio mediante service samba reload. También podemos ejecutar smbclient -L localhost -U%. en la máquina de Pepito, o smbclient -L pc-hijo -U% desde otro equipo de la casa que tuviera Linux instalado, así como el paquete smbclient.

Y esto es todo por hoy, Amigos!!!.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

      usemoslinux dijo

    Programador en Visual FoxPro… se me cae un lagrimón…
    Excelente aporte!
    Abrazo! Pablo.

         Federico Antonio Valdés Toujague dijo

      El lagrimón es por los buenos tiempos, eh?. Foxpro es como Elvis, aun vive. Lo ejecuto sobre Wine en Debian como el que más. Gracias por tu comentario!!!

           Julio Liborio dijo

        Mi primer comentario es para decir «Excelente comentario», Feliz día.!!!

      David dijo

    Excelente explicación, fácil y sencilla.
    100% recomendada, este método también lo utilizo, y por consola, es mucho mas simple y rápido.
    Saludos

      eliotime3000 dijo

    Excelente. No podía ser mejor turorial para hacer carpetas compartidas para Windows desde Debian.

      Federico Antonio Valdés Toujague dijo

    Gracias a todos por comentar y por la buena acogida del post!!!.

      Heber dijo

    Impecable. Muchas gracias por el aporte. Será de gran utilidad.

      e2fletcher dijo

    Excelente aporte, me servirá para abandonar security = share

         Federico Antonio Valdés Toujague dijo

      Security = Share es un modo de seguridad desaprobado por el Team Samba según muestran en su documentación. Me complace te haya servido el artículo para que abandones el uso de ese modo. Security = User es el modo por defecto. Gracias por comentar.

      Erick dijo

    Siempre lo digo sus post son muy educativos y muy bien explicados, como usted dice y como a mi me parece siempre es mejor configurar samba a mano y no con interfaces que no siempre hacen el trabajo bien, muy bueno su post, siga asi, que Dios lo bendiga, Saludos

      Federico Antonio Valdés Toujague dijo

    @Erick, trato de escribir los artículos de forma positiva y de que llegue a la mayoría de los lectores. Creo que como todas las demás cosas, a veces lo logro y otras no. Gracias de nuevo a TODOS!!!.

      pepe dijo

    Muy buen articulo, solo que como soy comodo, utilzo syste-config-samba, y me resulta mucho mas facil 🙂

         Federico Antonio Valdés Toujague dijo

      System Config Samba, de Ubuntu y otras distros, no te resuelve el problema de los permisos en las carpetas. Por regla general las personas que lo usan, otorgan permisos 777 a las carpetas y es un modo de compartir elemental al estilo XP sin un controlador de dominio, donde permites leer y escribir a cualquiera. Al final, lo que puede ser más complicado que es el tema de los permisos, lo debes hacer manualmente si quieres un poco de seguridad. Si ésta última no es tan necesaria, el método es válido. Gracias por comentar!!!

      Arturo dijo

    Buen artículo, sólo decir que al crear un grupo en Windows, éste va descubriendo las pc que integran la red.

      Cocolio dijo

    Una pregunta, que pasa si uso DHCP en todos mis terminales, sucede que tengo muchos dispositivos conectados inalámbricamente y me niego a ponerles direcciones estáticas, gracias.

         fico dijo

      Perdona la tardanza en responder, pero ahora fue cuando me di cuenta de tu comentario. Pienso que si usas DHCP, debes declarar a tu servidor linux samba, que actúe como un servidor WINS, y en el DHCP configurar la subnet y el rango acorde a los parámetros de tu red.

      Sino, consulta la documentación de Samba al respecto: «Samba3 – Howto», capítulo 48 DNS and DHCP Configuration Guide.

      Mauricio dijo

    Tremendo articulo amigo.

    También compartía por la terminal, me resultaba mas rápido, pero siempre tuve un inconveniente y era que en los equipos Windows, el explorador de red nunca veía mi equipo, pero si entraba la ip directamente, si podía navegar el directorio compartido por Samba.

    Sino estoy mal y mirando aquí, mi problema era, la no agregación al archivo host en ambos equipos???

    Bueno, excelente articulo, me gusto mucho.

      asen007 dijo

    Excelente de echo este y otros aportes para samba los estoy recopilando para hacerme mi propio servidor de archivos es como mi salvación cuando uno es novato se agradece.

    Felicitación

         federico dijo

      Gracias @asen007. Para eso escribimos con la esperanza de que sea de utilidad. Me alegra te ayude en tu desempeño. Felicidades !!!

      gabux dijo

    Una ves más gracias totales… Debianero de cora… 😀

      Alberto Ferrer Armero dijo

    Buenas!, queria saber que hace exactamente el comando «pdbedit -L» GRACIAS