¡Esta es una revisión vieja del documento!
Tabla de Contenidos
209.1 SAMBA Server Configuration
Perteneciente a Topic 209: File Sharing
- Weight: 5
- Description: Candidates should be able to set up a Samba server for various clients. This objective includes setting up Samba as a standalone server as well as integrating Samba as a member in an Active Directory. Furthermore, the configuration of simple CIFS and printer shares is covered. Also covered is a configuring a Linux client to use a Samba server. Troubleshooting installations is also tested.
- Key Knowledge Areas:
- Samba 4 documentation
- Samba 4 configuration files
- Samba 4 tools and utilities and daemons
- Mounting CIFS shares on Linux
- Mapping Windows user names to Linux user names
- User-Level, Share-Level and AD security
- Terms and Utilities:
smbd,nmbd, winbindd- smbcontrol,
smbstatus,testparm,smbpasswd,nmblookup - samba-tool
netsmbclient- mount.cifs
/etc/samba//var/log/samba/
Samba
Samba es una solución software de interoperabilidad con Windows disponible en los sistemas Linux y Unix.
El nombre de Samba viene del protocolo SMB (Server Message Block) utilizado para la compartición de recursos en las redes Microsoft. Permite en particular compartir archivos e impresoras en los servidores Linux para clientes Windows.
Tambien se conoce como CIFS, que es la implementacion que Windows hace de dicho protocolo.
La suite software Samba también tiene un cliente que permite a las máquinas Linux conectarse a los recursos compartidos de un servidor Windows.
Instalación
Dependiendo de la distribución, instalaremos servidor y cliente:
Debian:
apt-get install samba samba-client
Red Hat:
yum install samba samba-client
Samba se basa en dos daemons:
- El daemon
nmbdse encarga de anunciar los servicios y en general de todo el funcionamiento NetBIOS over IP. - El daemon
smbdse encarga de las comparticiones de archivos y de impresoras.
Los fichero de logs se almacenan en /var/log/samba:
log.nmbdlog.smbd
Configuración
Su fichero de configuración es /etc/samba/smb.conf y está dividido en secciones estandarizadas, cada una precedida por un título entre corchetes:
[seccion1] parametro1 = valor1 parametro2 = valor2 [seccion2] parametro3 = valor3 parametro4 = valor4
El manual de smb.conf es uno de los más extensos de Linux. Se puede consultar una versión online en la propia web de Samba.
Hay tres secciones especiales:
- global: Parámetros de configuración globales de samba
- homes: Define las carpetas personales de los usuarios (al estilo de los
/homede Linux). - printers: Configuración para el acceso a las impresoras de red
El resto de secciones corresponden a la configuración de carpetas compartidas o “shares”.
Sección [global]
Elementos comunes de la sección [global] en smb.conf:
[global]
workgroup = <grupo_de_trabajo>
server string = <comentario>
log file = </ruta/log.%m>
max log size = <log_maxi>
security = user # (por defecto)
encrypt passwords = true # (por defecto)
| Parámetro | Descripción |
|---|---|
grupo_de_trabajo | El nombre del grupo de trabajo del servidor. Hay que tener en cuenta que este parámetro también proporciona el nombre del dominio cuando está trabajando en un dominio. |
comentario | Comentario asociado al servidor. Visible por ejemplo en el Entorno de Red de las máquinas Windows. |
log.%m | Definición del formato estándar de los archivos de registro. |
log_maxi | Definición del tamaño máximo de los archivos de registro. |
user | (Opcional) Parámetro de seguridad que obliga a autentificarse con una cuenta de usuario. |
encrypt passwords | (Opcional) Necesario para todos los clientes modernos que presentan de forma nativa contraseñas encriptadas. |
Otros parámetros importantes de la sección [global] en smb.conf:
Netbios name: nombre del servidor sambaUnix passwords sync: permite sincronizar las contraseñas de samba con las del sistema. Al crear un usuario de Samba, también se crea un usuario en el sistema (Linux). Si se cambia la contraseña del usuario de Samba, tenemos que activar esta opción si queremos que también se actualice la de sistema.Passdb backend: especifica el sistema de autenticación (smbpasswd / tdbsam / ldap)Username map: establece el fichero de mapeo de usuarios del sistema con usuarios Windows.
Compartición de directorios
Formato típico de una [carpeta compartida] en smb.conf:
[nombre_comparticion]
comment = <comentario>
path = <ruta>
read only = yes
browseable = yes
| Valor | Descripción |
|---|---|
nombre_compartición | El nombre con el que se verá la compartición en las máquinas Windows. |
comentario | (Opcional) Definición del comentario asociado a la compartición. |
ruta | Definición de la ruta del directorio que se desea compartir. El directorio debe existir en el sistema de archivos Linux. |
read only | Definición del acceso a la compartición en modo de sólo lectura o lectura/escritura. read only tendrá el valor yes o no según se elija la configuración. Hay que tener en cuenta que este parámetro se aplica a la compartición y que el acceso queda sometido a los permisos del sistema de archivos Linux. |
browseable | Gestión de la visibilidad de la compartición para los clientes. |
Los valores de los parámetros pueden indicarse con yes, true o 1; y no, false o 0.
browseable hace que al conectarnos a un servidor con recursos compartidos, estos se listen (yes) o por el contrario no se muestren (no) y solo pueda acceder quien sabe que existe.
Ejemplo:
[documentos]
path = /home/pepito
browseable = yes
read only = yes
Para aplicar la nueva configuración, hay que reiniciar el servicio samba:
service samba-ad-dc restart
A partir de la versión 4 de Samba, la aplicación puede crear su propio dominio.
Para hacer la prueba desde un equipo Windows, abriríamos desde el navegador de archivos la ruta \\192.168.1.40 (o la dirección IP que tenga el servidor con samba) y nos debería listar los recursos compartidos, en este caso documentos. Para acceder al recurso necesitaríamos un usuario de Samba.
La herramienta testparm nos permite verificar la configuración.
Otros parámetros importantes para [carpeta compartida] en smb.conf:
guest ok: permite el acceso como invitado a la carpeta (puede usarse en[global]también)valid users: lista de usuarios o grupos con acceso a la carpeta.writeable: permiso para escribir en la carpeta (también es válidowritable).hosts <allow|deny>: máquinas con acceso permitido o denegado a las carpetas.
Modos de funcionamiento de Samba
En función del contexto de nuestra red, Samba pude actuar de varias modos:
- Standalone server: es una máquina independiente que comparte archivos en la red y gestiona la autenticación por sus medios.
- Miembro de un dominio: podemos añadir nuestro servidor a un dominio Windows NT o Active Directory, y la autenticación se gestionará en el dominio. Puede ser PDC (Primary Domain Controller) o BDC (Backup Domain Controller).
- Domain Controller: Samba, desde la versión 4, puede actuar como controlador de dominio sin necesidad de un Windows Server para generar su propio Directorio Activo. Se encargará de la autenticación, DNS interno…
Niveles de seguridad
Samba dispone de dos niveles de seguridad: a nivel de usuario (user-level) y a nivel de carpeta compartida (share-level). Son parámetros de configuración globales.
User-level:
security = user: para servidores standalone, usará la base de datos de contraseñas localsecurity = ads: samba actua como parte de un dominio Active Directorysecurity = domain: samba validará los usuarios contra un PDC o un BDC
Share-level:
security = share: cada share tiene sus propios usuarios y contraseñas válidos.
El fichero de configuración /etc/samba/smbusers nos permite realizar el mapeo de usuarios Samba con usuarios de Unix (permite que los usuarios Windows puedan conectarse sin una cuenta unix, y se apliquen los privilegios indicados). La cuenta Unix debe existir previamente.
El formato de este fichero es:
# Unix_name = SMB_name1 SMB_name2 ...
Ejemplo:
root = administrator admin nobody = guest smbguest
En el ejemplo anterior, los usuarios admin y administrator de Windows corresponderán a la cuenta root de Linux. Los usuarios guest y smbguest de Windows, a nobody de Linux.
Herramientas de administración de Samba
testparm
Comando que valida el formato del fichero de configuración y devuelve la configuración activa (sin líneas de comentarios) del servicio establecida en el fichero de configuración. De esta manera podríamos redirigir su salida a un archivo y así generar un smb.conf legible y de tamaño razonable.
-v: Devuelve el mismo informe más todos los parámetros de configuración no utilizados con su valor por defecto.
nmblookup
Comando que proporciona búsquedas de nombres NetBIOS sobre TCP/IP.
smbstatus
Comando que muestra las conexiones smb activas, es decir, los usuarios que están conectados a los recursos compartidos de la máquina con el servidor Samba.
Samba-tool
Esta es la herramienta que nos permite administrar todos los aspectos del servidor Samba cuando actúa como Active Directory Domain Controller (AD DC). No sirve cuando Samba actúa como Domain Member o Standalone Server.
net
Herramienta para la administración de servidor Samba y CIFS remotos. Es análoga a la herramienta net de Windows.
Administración de Credenciales
A la hora de autenticarse, tendremos que crear un usuario local y un usuario de Samba.
El cliente de Windows presentará una contraseña encriptada por el algoritmo de hash nativo de los sistemas Windows MD4 (Message Digest 4), mientras que las contraseñas de los sistemas Linux usan el algoritmo MD5 (Message Digest 5).
Para que los clientes Windows se puedan autentificar en los sistemas Linux, hay que hacer que estos sistemas alberguen una versión de la contraseña encriptada en MD4 además de la
contraseña nativa (/etc/shadow) encriptada en MD5.
Estas dos contraseñas se administrarán de forma independiente y podrán ser incluso distintas.
smbpasswd
Comando que permite gestionar las cuentas samba.
smbpasswd <opcion> <nombre_cuenta>
Opciones:
-a: Crea una contraseña MD4 para una cuenta linux existente.-d: Desactiva una cuenta samba.-e: Reactiva una cuenta samba.-x: Elimina una cuenta samba.
Suponiendo que existe el usuario linuxito en el sistema, tendríamos que crear un usuario de Samba:
smbpasswd -a linuxito
Una vez que hemos añadido el usuario. Si quisiésemos cambiarle la contraseña, ejecutaríamos el comando sin opciones:
smbpasswd linuxito
Es posible configurar que se sincronicen las contraseñas samba con las contraseñas del sistema Linux incluyendo la siguiente directiva en el smb.conf:
unix password sync = yes
En la versiones antiguas de SAMBA, la información generada por el comando smbpasswd, según la distribución se almacenaba en:
- Debian:
/etc/samba/smbpasswd - RedHat:
/var/lib/samba/private/smbpasswd
Pero las versiones recientes, utilizan el formato de base de datos TDB (tdbsam) para almacenar los usuarios y contraseñas, como alternativa al fichero smbpasswd. Y el directorio donde se encuentran estos ficheros, también depende de la distribución:
- Debian:
/var/lib/samba - RedHat:
/var/lib/samba/private
Cliente Samba
El cliente Samba permite acceder a una compartición de una máquina Windows o Samba desde un cliente Linux.
Los dos comandos principales del cliente samba son:
smbclientsmbmount
smbclient
Comando para obtener información de los recursos compartidos albergados por un servidor SMB.
smbclient -L <direccion_servidor> -U <nombre_usuario>
direccion_servidor: La dirección IP del servidor del que se quiere mostrar los recursos.nombre_usuario: Indica el nombre del usuario que realiza la consulta al servidor. Tiene que ser una cuenta existente y válida en el servidor.
También se puede utilizar el comando smbclient de forma interactiva conectándose a un recurso compartido y accediendo a un shell que permita realizar operaciones con los archivos.
smbclient \\\\direccion_servidor\\comparticion -U nombre_usuario smbclient //direccion_servidor/comparticion -U nombre_usuario
Donde compartición representa el nombre de la compartición albergada por el servidor.
Las múltiples barras inclinadas son necesarias. Se trata de una ruta UNC (Uniform Naming Convention), utilizada para designar un recurso en los entornos Windows. Una ruta UNC se compone del nombre del servidor, precedido de dos barras invertidas seguido de la ruta al recurso, separando con una barra invertida cada nivel. Sin embargo, se da el caso que en los sistemas Linux la barra invertida es un carácter reservado que indica que el shell no debe interpretar el carácter siguiente. Para escribir una contrabarra de verdad, hay que anteponerle otra para indicarle al sistema que la segunda debe considerarse como una barra invertida normal. Una alternativa más ligera consiste en cambiar las contrabarras por barras normales. Ambas sintaxis están permitidas.
Una vez que este comando se ejecuta y después de haber introducido la contraseña del usuario, se entra en el shell específico smbclient que permite realizar operaciones con los archivos. Los principales usos serán, por supuesto, obtener o enviar archivos a la compartición. Se puede desplazar por la estructura de directorios con el comando cd. Además, los dos comandos básicos son get para obtener archivos y put para enviar archivos a la compartición.
Ejemplo de sesión interactiva:
linux:~# smbclient \\\\192.168.0.10\\data -U pepito Enter pepito’s password: Domain=[WSERVIDOR] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] smb: \> ls . D 0 Wed Feb 3 19:28:33 2010 .. D 0 Wed Feb 3 19:28:33 2010 dos D 0 Wed Feb 3 18:50:05 2010 uno D 0 Wed Feb 3 19:28:38 2010
smbmount
Comando que permite realizar el montaje de una compartición SMB en un directorio local tal y como se puede hacer con un sistema de archivos local o una compartición NFS.
Este comando desaparecerá en futuras versiones de Samba
Tenemos dos formas de utilizarlo según usemos las barras invertidas o normales:
smbmount \\\\direccion_servidor\\comparticion punto_de_montaje -o user=nombre_usuario smbmount //direccion_servidor/comparticion punto_de_montaje -o user=nombre_usuario
direccion_servidor: Dirección IP del servidor que tiene la compartición a la que se quiere acceder.compartición: Nombre de la compartición albergada en el servidor.punto_de_montaje: Directorio existente en el que se montará la compartición.nombre_usuario: Nombre del usuario que realizará la petición al servidor. Tiene que ser una cuenta existente y válida en el servidor.
mount
Sintaxis del comando mount para montar una compartición smb:
mount -t smbfs -o username=<nombre_usuario> //<direccion_servidor>/<comparticion> <punto_de_montaje>
La opción -t smbfs provoca la llamada al subprograma smbmount para realizar el montaje, pero a partir de una sintaxis casi estándar para hacerlo.
Para que mount pueda montar un recurso Samba, es necesario instalar el paquete cifs-utils en Debian
Para responder a las necesidades de apertura del protocolo, SMB se ha normalizado, ha evolucionado y ahora se denomina CIFS (Common Internet File System). Como los hábitos se resisten a morir, todavía persiste el uso del nombre de SMB.
Según las versiones de Samba usadas, se puede utilizar smb, cifs o smb y cifs indiferentemente. La tendencia es la desaparición de smb en beneficio de cifs.
Sintaxis del comando mount para comparticiones cifs:
mount -t cifs -o username=<nombre_usuario> //<dirección_servidor>/<compartición> <punto_de_montaje>
Se puede verificar desde el lado servidor cuáles son los clientes que están conectados mediante el comando smbstatus.
