2. ¿Qué es Samba?
Samba es una aplicación libre que imita
el protocolo de archivos compartidos, qué
posée Windows (antes llamado SMB) y
sirve para los sistemas de tipo UNIX.
Permite que equipos con distros
GNU/Linux puedan compartir archivos e
impresoras con otros equipos de su red
local.
De ésta manera hace posible que
computadoras con GNU/Linux, Mac OS
X o Unix en general puedan ser usadas
como servidores o actúen como clientes
3. Inicios de Samba:
Samba es una creación de Andrew Tridgell
en el año 92. De acuerdo con información
brindada en la web oficial del software,
Tridgell necesitaba montar un espacio en
disco en su computadora para un servidor
Unix. Esa computadora corría el sistema
operativo DOS e inicialmente, utilizaba el
sistema de archivos NFS (Network File
System) para el acceso. Sin embargo, una
4. La solución que encontró Tridgell fue ésta:
escribió un sniffer que permitió analizar el tráfico
de los datos generado por el protocolo NetBIOS,
y haciendo ingeniería inversa en el protocolo
SMB (Server Message Block) y lo implementó
en el Unix.
Eso hizo que el servidor Unix apareciera como
un servidor de archivos Windows en su PC con
DOS.
En un principio Samba tomó el nombre de
SMBserver, y Andrew empezó a distribuirlo,
pero el tipo no pudo mantener el nombre
(porque ya pertenecía como nombre de
producto de otra empresa), así que intentó lo
siguiente para buscarle un nuevo nombre desde
Unix:
$grep −i 's.*m.*b' /usr/dict/words
5. Funcionamientos de Samba:
• Samba implementa los protocolos NetBIOS y
SMB/CIFS
NetBIOS: protocolo de nivel de sesión que permite
establecer sesiones entre dos ordenadores
SMB (Server Message Block): Que permite a los
sistemas de Windows compartir ficheros e
impresoras (llamado Common Internet File System,
CIFS por Microsoft)
• Samba ofrece los siguientes servicios:
Servicios de acceso remoto a ficheros e impresoras.
Autenticación y autorización.
6. Samba utiliza dos demonios: smbd y nmdb
smdb permite la compartición de archivos e
impresoras sobre una red SMB, y proporciona
autentificación y autorización de acceso para
clientes SMB; ofrece los dos modos de
compartición de recursos existentes en Windows
Modo basado en usuarios o modo user (propio de
los dominios Windows NT o 2000)
Modo basado en recursos o modo share (propio
de Windows 3.11/95)
nmbd permite que el sistema Unix participe en los
mecanismos de resolución de nombres propios de
Windows (WINS), lo que incluye
Anuncio en el grupo de trabajo
Gestión de la lista de ordenadores del grupo de
trabajo
7. Otros aspectos
Un servidor Samba puede integrar un dominio de
Windows Server, tanto si está en función PDC
(Primary Domain Controller) como si se trata de
un miembro del dominio. Además de esto, puede
formar parte de un dominio de Active Directory.
Samba funciona en la mayor parte de
los sistemas Unix y los que tienen unas
características similares a estos,
tanto Solaris como GNU/Linux, o las variaciones
de BSD, entre las que destacan el más que
conocido sistema operativo Mac OS X Server del
fabricante Apple.
8. En cuanto a su presencia en Linux, los servidores
Samba están estandarizados y es habitual
encontrarse con ellos de forma predeterminada.
Esto hace que se haya convertido en una muy
buena opción para la elaboración de servidores de
red, especialmente gracias a las opciones de
conectividad que ofrece.
En resumen, un servidor de Samba es el que se
encarga de la interconexión de equipos de distintos
sistemas permitiendo una alta rentabilidad en
cuanto al acceso de estos ordenadores.
9. Utilidades adicionales:
Samba ofrece más utilidades; las más relevantes
son:
smbclient: es una interfaz que permite a un usuario
de un sistema Unix conectarse a recursos SMB y
listar, transferir y enviar ficheros.
swat (Samba Web Administration Tool) : Es una
utilidad para configurar Samba de forma local o
remota utilizando un navegador web
smbfs sistema de ficheros SMB para Linux:
permite montar un recurso SMB ofrecido por un
servidor SMB (un sistema Windows o un servidor
Samba) en un directorio local
winbind permite al sistema UNIX resolver nombres
10. Instalación de Samba
Se necesitará tener instalados los siguientes paquetes:
samba: Servidor SMB.
samba-client: Diversos clientes para el protocolo SMB.
samba-common: Archivos necesarios para cliente y servidor.
En CentOS, RedHat, Fedora, etc:
$yum -y install samba samba-client samba-common
En SO "derivados" de Debian:
$ apt-get install samba samba-client smbfs smbclient
En ArchLinux y otros SO que usan pacman para instalar
paquetes:
$pacman -S samba
11. «Opcional» Desactivar el
Firewall:
Es necesario abrir los puertos 135 al 139 por TCP y UDP y
el puerto 445 por TCP.
Para ésto puede usarse directamente las iptables
ejecutando lo siguiente:
$iptables -A INPUT -m state --state NEW -m tcp -p tcp -dport 135:139 -j ACCEPT
$iptables -A INPUT -m state --state NEW -m udp -p udp -dport 135:139 -j ACCEPT
$iptables -A INPUT -m state --state NEW -m tcp -p tcp -dport 445 -j ACCEPT
service iptables save
12. O bien se puede editar el archivo /etc/sysconfig/iptables:
nano /etc/sysconfig/iptables
Y se le agrega el siguiente contenido:
-A INPUT -m state --state NEW -m tcp -p tcp --dport
135:139 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport
135:139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j
ACCEPT
Para aplicar los cambios, para aplicar los cambios
reiniciamos las Iptables:
service iptables restart
13. Iniciar los servicios con el
sistema:
Iniciar el servicio y añadirlo al arranque del
sistema.
Para iniciar los servicios nmb y smb, ejecutamos:
$service nmb start
$service smb start
Si realiza algún cambio en la configuración de la
opción netbios name, es necesario reiniciar el
servicio nmb, el cual es el encargado de proveer
el servidor de nombres para los clientes a través
de NetBIOS sobre IP.
service nmb restart
14. Si se va a aplicar algún cambio en cualquier otra
opción de la configuración, como son los
recursos compartidos, sólo es necesario reiniciar
el servicio smb:
$service smb restart
Para que los servicios nmb y smb inicien
automáticamente junto con el sistema, sólo
utilizamos los dos siguientes comandos:
chkconfig nmb on
chkconfig smb on
15. Configuración
La configuración del servidor samba se realiza en el
archivo /etc/samba/smb.conf el cual podemos modificar
de la siguiente manera:
$ sudo nano /etc/samba/smb.conf
Para modificar el grupo de trabajo
Buscamos la línea que diga algo como :
workgroup = MSHOME
y reemplazamos MSHOME por el nombre de nuestro
grupo de trabajo.
16. Para compartir una carpeta:
Opción 1:
Primero debemos crear una carpeta con permisos (por
ejemplo) :
$ sudo mkdir /home/publico
$ sudo chmod 755 /home/publico Luego abrimos la
configuración y le agregamos, al final, algo como esto :
[publico]
comment = Cosas publicas
path = /home/publico
public = yes
writable = no
Las opciones son sugerentes, por ejemplo "public = yes" es
para que se pueda acceder a la carpeta cualquier usuario, y
"writable = no" es para que no se pueda escribir.
17. Opción 2
Para añadir los recursos con nautilus (navegador de
archivos) debemos crear la siguiente carpeta con sus
respectivos permisos:
$ sudo mkdir -p /usr/local/samba/lib/usershares
$ sudo chgrp sambashare
/usr/local/samba/lib/usershares
$ sudo chmod 1770 /usr/local/samba/lib/usershares
Y luego agregas los siguientes parámetros a la
configuración:
usershare path = /usr/local/samba/lib/usershares
usershare max shares = 10
Finalmente se pueden añadir carpetas en nautilus
18. Opción 3 (Ubuntu, y algunos Linux con gnome)
Nos dirigimos al menú de Ubuntu: Sistema, Administración
y seleccionamos Carpetas compartidas. Pulsamos añadir
(en la imagen yo ya tengo añadida una carpeta, pero tú
deberías tenerla en blanco) y nos aparecerá una imagen
como la inferior.
En ruta, buscamos la carpeta que queremos compartir,
como nombre pondremos Compartidos (por ejemplo) y
seleccionamos Permitir examinar la carpeta. Pulsamos
sobre Configuracion general de archivos compartidos con
Windows, en Dominio introducimos el nombre de red que
19. Compartir la Unidad de CDROM:
Abrimos la configuración y le agregamos, al final, algo
como esto :
[cdrom]
comment = Cd Rom Compartido
path = /media/cdrom0
public = yes
writable = no
browseable = yes
(le agregamos un nuevo parámetro "browseable" esto
sirve para ingresar a la maquina por medio de windows
y linux de forma remota y ver la carpeta que esta
compartida)
20. Compartir impresora con
Windows
Compartir impresoras en Samba es muy sencillo
simplemente busca estas dos líneas en el archivo
/etc/samba/smb.conf (Recuerda hacer una copia
de respaldo) :
printing = cups
printcap name = cups
Guarda el archivo cimprueba los parámetros de
smb.conf y reinicia el servidor de Samba
21. Parámetros de configuración:
Globales:
check password script : permite definir un script que verificará la complejidad de la contraseña definida,
retornando 0 si es aprobada por el programa indicado
debug uid : permite registrar los uid, gid, euid y egid del usuario que solicita un recurso en el log del servidor
domain master : habilita a nmbd con un nombre NetBios específico que lo identifica como maestro de
dominio del grupo de trabajo indicado
guest account : usuario utilizado para acceder a los recursos que tienen definido "guest ok"
include : incluye otro archivo de configuración complementario
debuglevel o log level : permite definir el nivel de detalle del log; incluso por módulo: all ,tdb ,printdrivers
,lanman ,smb ,rpc_parse ,rpc_srv ,rpc_cli ,passdb ,sam ,auth ,winbind ,vfs ,idmap ,quota ,acls ,locking
,msdfs ,dmapi ,registry
map to guest : le indica al servidor la acción a tomar cuando falla el inicio de sesión de un usuario. inútil en
security = share o server
max log size : tamaño máximo del log
message command : le indica al servidor la acción al recibir un mensaje tipo WinPopup
netbios name : nombre netbios del servidor samba
null passwords : permite el acceso a usuarios con contraseñas vacías
panic action : comando a realizar al caerse smbd o nmbd
prefered master o preferred master : indica si samba es preferencialmente maestro en el grupo de trabajo
security : determina cómo los clientes responden el logeo (usuario y contraseña) según el "security mode
bit" enviado en las negociaciones de protocolo.
share : clientes se registran al solicitar un recurso (permite ver la lista de recursos para visitas)
user : clientes se registran al solicitar la lista de recursos o solicitar un recurso
domain : idéntico al anterior, pero los datos de registro se consultan con controlador de dominio
server : idéntico al anterior, pero los datos de registro se consultan con servidor SMB
server string : texto desplegado como nombre completo del servidor
22. Usershares:
Parámetros de configuración aplicables a las carpetas
compartidas a través de nautilus ("Opciones de
compartición"):
usershare allow guests : las carpetas compartidas serán
accedidas por los usuarios sin registrarse
usershare max shares : número máximo de carpetas
compartidas por usuario
usershare owner only : permite compartir sólo las carpetas
pertenecientes al usuario
usershare path : ruta donde se almacenan las carpetas
compartidas por cada usuario (los permisos de la carpeta
indicada controlan quienes pueden compartir a través de
este medio)
usershare prefix allow list : lista separada por comas de las
rutas absolutas permitidas para compartir (incluye
23. Recursos
administrative share : recurso administrativo. creado por defecto en sistemas MS. Por Ejemplo: C$ , D$ ,
IPC$.
admin users : lista de usuarios con total permiso sobre los recursos (no aplica si secury = share)
browsable o browseable : define si el recurso es apreciable en la lista de recursos del servidor
comment : permite definir un comentario aplicado al recurso, desplegable en los recursos de toda la red;
a través de net view o de smbclient
create mode o create mask : permite restringir los permisos de los archivos/directorios creados en un
recurso a través de una máscara de permisos
force create mode : permite aplicar permisos a los archivos/directorios creados en un recurso
directory mode o directory mask : similar a create mode o create mask, aplicado a directorios
force directory mode : similar a force create mode, aplicado a directorios
directory security mask : mascara de permisos aplicado a clientes Windows NT.
group o force group : grupo utilizado como gid del usuario conectado
user o force user : usuario utilizado como uid del usuario conectado
guest ok : permite acceder a un recurso sin identificarse
only guest o guest only : permite acceder sólo a usuarios sin identificación. requiere el parámetro "guest
ok"
allow hosts o hosts allow : lista de equipos permitidos de acceder al recurso. puede aplicar como global
deny hosts o hosts deny : lista de equipos no permitidos de acceder al recurso. puede aplicar como
global
invalid users : lista de usuarios no permitidos de acceder al recurso
only user : permite el acceso sólo a los usuarios en la lista user
directory o path : ruta del recurso indicado
read list : lista de usuarios que tienen acceso de sólo lectura
read only o writeable : no se permite crear ni modificar los archivos/directorios del recurso
user , users o username : usuarios con los cuales se probará la contraseña entregada
valid users : lista de usuarios permitidos de acceder al recurso
24. Permisos:
Gestión de usuarios de Samba:
La gestión de usuarios de samba se realiza con el comando
smbpasswd. Con dicho comando, entre otras cosas podremos
crear y eliminar usuarios, cambiar su contraseña, etc.
Creación de un usuario de Samba:
Para crear un usuario de samba debemos utilizar el comando
smbpasswd, pero antes debemos haber creado el usuario en
Unix. Ejemplo, supongamos que queremos crear en Unix al
usuario ulises:
sudo useradd ulises
Si deseamos que Ulises pueda disfrutar de los servicios del
Sambita, debemos crear a Ulises como usuario de samba
ejecutando el siguiente comando:
sudo smbpasswd -a ulises
Con la opción -a indicamos que añada al usuario. Acto seguido
nos preguntará dos veces la contraseña que deseamos poner al
usuario. Lo razonable es que sea la misma contraseña que tiene
25. Eliminar un usuario de samba:
Para eliminar un usuario de samba debemos ejecutar
smbpasswd con la opción -x, ejemplo:
sudo smbpasswd -x ulises
Inmediatamente el usuario habrá desaparecido de la base
de datos de 'usuarios samba' aunque seguirá siendo un
usuario de Unix.
Otras opciones de smbpasswd:
-d: Deshabilitar un usuario
-e: Habilitar un usuario
-n: Usuario sin password. Necesita parámetro null
passwords = yes en sección 'global' del archivo de
configuración de Samba.
26. Gestión de grupos y permisos con
Samba:
La gestión de grupos y permisos de usuarios y grupos
es sustancialmente diferente en Sistemas Unix y en
Sistemas Microsoft Windows.
En los Sistemas Unix, la gestión de los permisos que
los usuarios y los grupos de usuarios tienen sobre los
archivos se realiza mediante un sencillo esquema de
tres tipos de permisos (lectura, escritura y ejecución)
aplicables a tres tipos de usuarios (propietario, grupo
propietario y resto). Este sencillo esquema se desarrolló
en los años 70 y aún hoy resulta adecuado para la gran
mayoría de los sistemas en red que podamos encontrar
en cualquier tipo de organización, desde pequeñas
redes a las más grandes. Es cierto que tiene algunas
limitaciones pero la ventaja de ser sencillo hace que su
27. En los Sistemas Microsoft Windows, la gestión de los
permisos que los usuarios y los grupos de usuarios
tienen sobre los archivos, se realiza mediante un
complejo esquema de listas de control de acceso (ACLs
= Access Control Lists) para cada carpeta y cada
archivo. El sistema de ACLs tiene la ventaja de ser
mucho más flexible que el sistema Unix ya que se
pueden establecer más tipos de permisos, establecer
permisos solo a algunos usuarios y algunos grupos,
denegar permisos, etc..., pero como hemos comentado
anteriormente, en la mayoría de los casos, con las
prestaciones del Sistema Unix es suficiente. En el lado
contrario, el sistema de ACLs es más complejo de
administrar y más lento ya que antes de acceder a las
carpetas o archivos, el sistema debe comprobar listas
mientras que en Unix hace una operación lógica de los
28. Samba tiene también implementado el sistema de ACLs
y se gestiona utilizando el comando smbcacls, no
obstante, la recomendación es utilizar el sistema de
gestión de permisos de Unix. Aunque existan carpetas
compartidas con samba, en última estancia imperan los
permisos de Unix. Por ejemplo, si tenemos compartida
una carpeta llamada 'profesores' con permisos de
escritura para el grupo profesores, todos los usuarios
que pertenezcan al grupo profesores podrán realizar
cambios en la carpeta, pero si dentro de dicha carpeta
existe otra llamada 'confidencial' sobre la cual no tiene
permiso para entrar el grupo profesores, ningún
profesor podrá ver su contenido aunque esté dentro de
una carpeta compartida.
Para realizar una gestión eficaz de usuarios, grupos y
permisos, se recomienda utilizar los permisos de Unix
que permiten asignar permisos de lectura, escritura y