¡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
dpkg-reconfigure samba-common
:~# 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!!!.
Programador en Visual FoxPro… se me cae un lagrimón…
Excelente aporte!
Abrazo! Pablo.
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!!!
Mi primer comentario es para decir «Excelente comentario», Feliz día.!!!
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
Excelente. No podía ser mejor turorial para hacer carpetas compartidas para Windows desde Debian.
Gracias a todos por comentar y por la buena acogida del post!!!.
Impecable. Muchas gracias por el aporte. Será de gran utilidad.
Excelente aporte, me servirá para abandonar security = share
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.
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
@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!!!.
Muy buen articulo, solo que como soy comodo, utilzo syste-config-samba, y me resulta mucho mas facil 🙂
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!!!
Buen artículo, sólo decir que al crear un grupo en Windows, éste va descubriendo las pc que integran la red.
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.
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.
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.
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
Gracias @asen007. Para eso escribimos con la esperanza de que sea de utilidad. Me alegra te ayude en tu desempeño. Felicidades !!!
Una ves más gracias totales… Debianero de cora… 😀
Buenas!, queria saber que hace exactamente el comando «pdbedit -L» GRACIAS