InicioLinuxSamba a fondo


Post editado 12/11/2012

Actualización realizada:

Adjunte el archivo smb.conf para su descarga.
Se instaló en el servidor una impresora virtual pdf para compartir en red.
Se corrigió el error de la \ (gracias a @cesarzeta)
Configuración en el cliente de la impresora pdf.
Algunas modificaciones menores para que todo quede mejor explicado.



Samba es un programa Open Source que nos permite compartir archivos e impresoras desde un sistema Gnu/Linux, lo cual es muy útil ya que podemos tener un servidor de archivos y de impresión colocado en una red donde se conectan equipos Gnu/Linux y Windows.


Procedemos a instalar samba con el siguiente comando:

su

poner contraseña de root, a partir de ahora y en todo el tutorial vamos a trabajar como usuario root.
(Si estas en ubuntu, sudo su y pones tu propia contraseña)


apt-get install samba cups-pdf





Crear cuentas de usuario samba

Es importante sincronizar las cuentas entre el servidor samba y las estaciones que se conectaran. Es decir, si en una máquina ingresamos como el usuario gerente, en el servidor samba deberá existir también dicha cuenta con ese mismo nombre.


Como la mayoría de las cuentas de usuario que se utilizarán para acceder hacia Samba no requieren acceso al intérprete de mandatos del sistema, se deberá definir /sbin/nologin de esta forma este usuario no podrá hacer login en el sistema solo conectarse a samba desde otro equipo.


useradd -s /sbin/nologin gerente

passwd gerente


Asigne una contraseña samba al usuario recien creado.


smbpasswd -a gerente


Nos aparecerá algo como:

New SMB password:
Retype new SMB password:
Added user gerente




Repetir este procedimiento con cada usuario que quiera conectarse al servidor.


Si se desea eliminar un usuario de samba:

smbpasswd -x nombre_usuario


Crear archivo lmhosts

Es necesario empezar resolviendo de manera local los nombres NetBIOS, asociándolos con las direcciones IP correspondientes, en el /etc/samba/lmhosts (LAN Manager Hosts). Edite el archivo /etc/hosts

nano /etc/samba/lmhosts

Se deben añadir los nombres (máximo de doce caracteres alfanuméricos) y direcciones IP de cada uno de los anfitriones de la red local. La separación de campos se hace con un tabulador.



Guardamos el archivo y salimos del editor de texto.


Parámetros de smb.conf

El archivo de configuración de Samba puede ser encontrado en /etc/samba/smb.conf, dentro de este archivo, encontrará información que será de utilidad y que está comentada con almohadillas # y varios ejemplos comentados con punto y coma ;.

Existen tres secciones predefinidas, denominadas global , homes y printers , y tantas secciones adicionales como recursos extra se quieran compartir.

[ global ]
Define los parámetros de Samba a nivel global del servidor, así como los parámetros que se establecerán por defecto en el resto de las secciones.

[ homes ]
Define automáticamente un recurso de red por cada usuario conocido por Samba. Este recurso, por defecto, está asociado
al directorio de conexión de cada usuario en el ordenador en el que Samba está instalado.

[ printers ]
Define un recurso compartido por cada nombre de impresora conocida por Samba.


Dentro de [ global ] encontraremos



workgroup

Se establece el grupo de trabajo definiendo el valor del parámetro workgroup asignando un grupo de trabajo deseado:

workgroup = MIGRUPO


server string

Este parámetro es de carácter descriptivo. Puede utilizarse un comentario breve que de una descripción del servidor.

server string = Servidor Samba %v en %L


netbios name

En esta linea deberás especificar el nombre que tiene asignado el equipo. Su nombre debe ser igual al especificado en el fichero /etc/samba/lmhosts

netbios name = servidor


name resolve order

Define el orden a través del cual se tratará de resolver los nombres NETBIOS. Si utiliza el siguiente ejemplo, se establece que primero se intentará resolver los nombres NETBIOS con la información del archivo /etc/samba/lmhosts, luego el archivo /etc/hosts, luego a través de consultas en el servidor WINS y, si todo lo anterior falla, a través de la dirección IP de difusión de la red local.

name resolve order = lmhosts hosts wins bcast


interfaces

Permite establecer desde que interfaces de red del sistema se escucharán peticiones. Samba rechazará todas las conexiones provenientes desde cualquier otra interfaz o dirección IP, sin definir.

Los valores aceptados para este parámetro es una lista, separada por comas o espacios, con los nombres de las interfaces (lo, eth0, eth1, etc.) y direcciones IP utilizada en una interfaz en particular.

interfaces = lo, eth0, 192.168.0.111


hosts allow

Esta linea especifica desde que segmentos de red escuchara peticiones el servidor Samba, En el siguiente ejemplo se define las red
127.0.0.0/8 (loopback), la ip 192.168.10.120 y la red 192.168.0.0/24.

hosts allow = 127., 192.168.10.120, 192.168.0.
Note el punto al final de la linea.


security

Samba ofrece diferentes modos de seguridad.

Modo share: Cada vez que un cliente quiere utilizar un recurso ofrecido por samba, debe suministrar una contraseña de acceso asociada a dicho recurso.

Modo user: El cliente debe suministrar un nombre de usuario y una contraseña. Una vez samba valida al usuario, el cliente obtiene permiso para acceder a los recursos ofrecidos por samba.

Modo server: En el nivel server , Samba delega la validación del usuario en otro ordenador.

Modo domain: Este nivel es similar al nivel server , aunque en este caso el ordenador en el que se delega la validación debe ser un PDC.

security = user


Dentro de [ homes ] encontraremos

[ homes ]
   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
  create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
   directory mask = 0700



Si un usuario intenta conectarse a un recurso compartido ordinario que no aparece en el fichero smb.conf, samba va a buscar el recurso compartido [ homes ]. Si no existe, el nombre del recurso compartido enviado a samba se asume como un nombre de usuario y se busca como tal su contraseña en la base de datos del servidor samba. Si aparece, samba asume que el cliente es un usuario Unix intentando conectar a su directorio personal.


Dentro de [ printers ] encontraremos

[ printers ]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700


Las impresoras se comparten de modo predeterminado, así que sólo hay que realizar algunos ajustes. Si se desea que se pueda acceder hacia la impresora como usuario invitado sin contraseña, basta con añadir guest ok = yes


Compartiendo directorios

Para los directorios o volúmenes que se irán a compartir, en el mismo archivo de configuración encontrará distintos ejemplos para distintas situaciones particulares. Al final del archivo se debe agregar los recursos a compartir.


[compartido]
comment = Directorio compartido
path = /ruta/a/compartir



Procure que los nombres de los recursos a compartir tengan un máximo de 12 caracteres, utilizando sólo caracteres alfanuméricos de la tabla de caracteres ASCII.


Posibles opciones:

guest ok------------> Define si se permitirá el acceso como usuario invitado. El valor puede ser Yes o No

public---------------> Es un equivalente del parámetro guest ok, es decir define si se permitirá el acceso como usuario invitado. El valor puede ser yes o no.

browseable---------> Define si se permitirá mostrar este recurso en las listas de recursos compartidos. El valor puede ser yes o no.

writable-------------> Define si se permitirá la escritura. Es el parámetro contrario de read only. El valor puede ser yes o no.

valid users---------> Define los usuarios o grupos, que podrán acceder al recurso compartido. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @

write list------------> Define los usuarios o grupos, que podrán acceder con permiso de escritura. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @

admin users--------> Define los usuarios o grupos, que podrán acceder con permisos administrativos para el recurso. Es decir, podrán acceder hacia el recurso realizando todas las operaciones como super-usuarios. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @

directory mask-----> Es lo mismo que directory mode. Define qué permiso en el sistema tendrán los subdirectorios creados dentro del recurso. Ejemplo: 1777

create mask---------> Define que permiso en el sistema tendrán los nuevos archivos creados dentro del recurso. Ejemplo: 0644


vfs objects y recycle:repository

La Papelera de Reciclaje se activa añadiendo a cada recurso a compartir los parámetros vfs objects y recycle:repository

vfs objects = recycle
recycle:repository = .recycle



recycle:versions y recycle:keeptree

El parámetro recycle:versions define que si hay dos o más archivos con el mismo nombre y estos son enviados a la Papelera de Reciclaje, se mantendrán todos donde los archivo más recientes tendrán un nombre con el esquema «Copy #x of nombre-archivo»


recycle:versions = yes
recycle:keeptree = yes



hide dot files

Es poco conveniente que los usuarios puedan acceder, notando la presencia de archivos ocultos. Se debe agregar el parámetro hide dot files, con el valor yes, en los recursos que se desean ocultar.

hide dot files = yes


Configuracion de Samba


Veamos ahora una configuración completamente funcional con todo lo explicado antes.
Iremos revisando el archivo smb.conf y modificándolo de acuerdo a estos datos.

#
# Sample configuration file for the Samba suite for Debian GNU/Linux.

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = WORKGROUP

# server string is the equivalent of the NT Description field
   server string = Servidor Samba %v en %L

   netbios name = servidor

# This will prevent nmbd to search for NetBIOS names through DNS.
   dns proxy = no

# What naming service and in what order should we use to resolve host names
# to IP addresses
   name resolve order = lmhosts host wins bcast

#### Networking ####

# The specific set of interfaces / networks to bind to

   interfaces = 127.0.0.0/8 eth0 192.168.0.111

   hosts allow = 127., 192.168.0.


#### Debugging/Accounting ####

# This tells Samba to use a separate log file for each machine
# that connects
   log file = /var/log/samba/log.%m

# Cap the size of the individual log files (in KiB).
   max log size = 1000

# If you want Samba to only log through syslog then set the following
# parameter to 'yes'.
#   syslog only = no

# We want Samba to log a minimum amount of information to syslog.
   syslog = 0

# Do something sensible when Samba crashes: mail the admin a backtrace
   panic action = /usr/share/samba/panic-action %d


####### Authentication #######

   security = share

# You may wish to use password encryption.  See the section on
   encrypt passwords = true

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.  
   passdb backend = tdbsam

   obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set.
   passwd program = /usr/bin/passwd %u
   passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .

# This boolean controls whether PAM will be used for password changes
   pam password change = yes

########## Printing ##########

# CUPS printing.
   printing = cups
   printcap name = cups

#======================= Share Definitions =======================

[homes]
   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = yes

# File creation mask is set to 0700 for security reasons. 
   create mask = 0700

# Directory creation mask is set to 0700 for security reasons.
   directory mask = 0700

# By default, \serverusername shares can be connected to by anyone
# with access to the samba server.
   valid users = %S

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = yes
   read only = yes
   create mask = 0700

#======================= Compartido =======================

[Solo lectura]
path = /home/red/sololectura
comment = Datos compartidos solo lectura
write list = gerente
browseable = yes
read only = yes
guest ok = yes
vfs objects = recycle
recycle:repository = .recycle
recycle:versions = yes
recycle:keeptree = yes

[Privado]
path = /home/red/privado
comment = Acceso a usuarios privilegiados
write list = gerente
read only = no
browseable = yes
vfs objects = recycle
recycle:repository = .recycle
recycle:versions = yes
recycle:keeptree = yes
hide dot files = yes

[Publico]
path = /home/red/publico
comment = Directorio publico
browseable = yes
read only = no
writable = yes
guest ok = yes
vfs objects = recycle
recycle:repository = .recycle
recycle:versions = yes
recycle:keeptree = yes
hide dot files = yes


Si queres descargar el smb.conf

wget http://files.myopera.com/alband/files/smb.conf










Cerrar el editor de texto y guardar los cambios.


Genere los siguientes directorios, donde se alojarán los archivos a compartir:


mkdir -p /home/red/publico
mkdir -p /home/red/privado
mkdir -p /home/red/sololectura


le asignamos permisos especiales a cada directorio creado.

chmod 777 /home/red/publico
chmod 750 /home/red/privado
chmod 755 /home/red/sololectura



creamos un grupo
addgroup privado

chown gerente:privado /home/red/privado
chown gerente:gerente /home/red/sololectura


usermod -G privado gerente
usermod -G privado alband





Ahora que todo esta configurado debemos ejecutar el siguiente comando:

testparm | more

Si todo está bien sintácticamente y no hay errores se mostrará:




Configurando los clientes samba


Cabe recomendar que los clientes deberían tener todos ip estática asignada.

En los clientes Gnu/Linux que se van a conectar instalar smbclient


Crear archivo lmhosts


Realizamos el mismo proceso que en el servidor con este archivo.

nano /etc/samba/lmhosts



Guardamos el archivo y salimos del editor de texto.

Y por último agregamos al archivo smb.conf estas líneas:

echo "name resolve order = lmhosts hosts wins bcast" >> /etc/samba/smb.conf

/etc/init.d/samba restart


En los clientes xp que se van a conectar, se deberá editar el archivo hosts como se muestra en la imágen
Desde la línea de comandos buscamos el archivo a editar





Y en los clienes seven se hace de esta forma








El nombre del equipo y grupo de trabajo es muy fácil cambiarlo, no hace ni falta explicarlo.


Modificaciones necesarias en el firewall del servidor

Es necesario abrir los puertos 135 al 139 por TCP y UDP y el puerto 445 por TCP, puede utilizar directamente el mandato iptables, ejecutando lo siguiente:

iptables -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 135:139 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -m udp -p udp --dport 135:139 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 445 -j ACCEPT



Si estas necesitando instalar un firewall podes visitar mis aportes anteriores.


Implementamos quotas

Vamos a instalar quotas de disco para tener controlado el espacio que usará cada usuario.


apt-get install quota quotatool

editamos fstab

nano -wB /etc/fstab

Al tratarse de un servidor son varias las particiones que tenemos, la que nos interesa es la /home en este caso tiene que quedar asi:




Con eso cuando reiniciemos tendremos la partición preparada. Para activarlo ahora sin reiniciar:

mount -o remount /home


Creamos 2 archivos en la partición en la que queremos crear las cuotas de usuario:

cd /home
touch quota.user quota.group
chmod 600 quota.user quota.group
quotacheck -avugf


dara un un mensaje informativo

touch aquota.user aquota.group
chmod 600 aquota.user aquota.group


Activamos las quotas con:

quotaon /home




Para asignar cuotas de disco a cualquier usuario o grupo solo hará falta utilizar edquota citando el nombre del usuario o grupo al cual se le quiere aplicar:

edquota -g red

Lo anterior deberá devolver algo como lo siguiente a través de vi u otro editor de texto simple:




Asi le asigno una cuota de 1GB a /home al grupo red.

Esto es solo un ejemplo, cada uno debe establecer los límites que correspondan a su propio caso.

De esta forma asignamos las mismas cuotas de disco a los grupos red, privado y a nogroup.
(nogroup es el usuario guest que se usa en red)


Para revisar las cuota
repquota -aug




cron

A título de mantenimiento del sistema, vamos a crear una tarea programada con cron para que elimine de la papelera los archivos con una antiguedad superior a 7 días.

nano -wB /etc/crontab

01 13   * * *   root    find /home/red/publico/.recycle -atime +7 -type f -exec rm {}\;
21 13   * * *   root    find /home/red/privado/.recycle -atime +7 -type f -exec rm {}\;
41 13   * * *   root    find /home/red/sololectura/.recycle -atime +7 -type f -exec rm {}\;





Las primera tarea se ejecuta todos los días a las 13:12 pm y las siguientes a 20 minutos de diferencia entre cada una.



cups-pdf

Una ventaja añadida es que cups-pdf puede utilizarse en cualquier sistema que utilice CUPS (Common Unix Printing System). Además, resulta muy sencillo

Vamos a poner la impresora virtual a disposición de toda la red interna, y el resultado de la impresión lo podrán encontrar los clientes en el recurso compartido "publico".


nano -wB /etc/cups/cups-pdf.conf


Cambimos la ruta donde se van a almacenar los archivos creados.

Out /home/red/publico





Y modificamos esta línea para que los archivos tengan un nombre más corto (job_1, job_2 etc)


Label 1





El resultado de todo lo realizado









Para acceder al privado me pide la contraseña y usuario







Alcanzó el límite de su cuota el grupo




Comprobamos que en el servidor hay mucho espacio disponible




El reporte de quotas nos lo confirma.




Agregando la impresora pdf a los clientes


Agregamos las impresora, le marcamos generic, postscript como se muestra







Pagina de prueba en pdf






Si te gusto el post comenta!
Estas sin tiempo para leerlo detenidamente? Agregalo a favoritos ya!
No entendiste algo? mandame un MP que te ayudo.

Te gustan mis aportes? Seguime! no te defraudaré.




Fuentes de conocimientos:


samba

http://unidadlocal.com/Instalar_y_configurar_SAMBA_en_Linux
javascript:void(0)
http://jesusvillaverde.com/external/howtos/index.html
javascript:void(0)
http://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolution
http://www.faqs.org/docs/securing/chap29sec285.html
javascript:void(0)
javascript:void(0)
http://www.eslomas.com/2008/10/papelera-de-reciclaje-con-samba
javascript:void(0)
javascript:void(0)
javascript:void(0)
javascript:void(0)
javascript:void(0)
http://www.faqs.org/docs/securing/index.html

cron

javascript:void(0)
http://www.linuxtotal.com.mx/index.php?cont=info_admon_006

quotas

javascript:void(0)
javascript:void(0)

cups-pfd

javascript:void(0)
javascript:void(0)
javascript:void(0)
javascript:void(0)
Datos archivados del Taringa! original
267puntos
5,682visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

a
alband🇦🇷
Usuario
Puntos0
Posts71
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.