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)