
%*************************************************
%                   Samba                        *
%         Autor: Antonio Cruz asnake@terra.es    *
%*************************************************


\chapter{Puesta en funcionamiento y Configuración de Samba}

%****Introducción****

\section{Introducción}

Samba es un conjunto de programas que permiten que máquinas que no trabajan
con Windows puedan utilizar el protocolo Server Message Block (SMB), que es
el protocolo de uso nativo de los sistemas Windows.

\section{¿De dónde viene Samba?}

Samba es la idea de Andrew Tridgell, quien actualmente lidera el equipo
de desarrollo de Samba development desde su casa de Canberra, Australia.
El proyecto nació en 1991 cuando Andrew creó un programa servidor de
ficheros para su red local, que soportaba un raro protocolo DEC de Digital
Pathworks. Aunque él no lo supo en ese momento, aquel protocolo más tarde
se convertiría en SMB. Unos cuantos años después, él lo expandió como su
servidor SMB particular y comenzó a distribuirlo como producto por Internet
bajo el nombre de servidor SMB. Sin embargo, Andrew no pudo mantener ese
nombre -ya pertenecía como nombre de producto de otra compañía-, así que
intentó lo siguiente para buscarle un nuevo nombre desde Unix:\\
\\
\comando{grep -i 's.*m.*b' /usr/dict/words}
\\
y la respuesta fue:salmonberry samba sawtimber scramble


De ésta manera nació el nombre de Samba\footnote{Extraido de la traducción
del libro 'Using Samba' que puede encontrarse en \sitio{www.samtek.es/sobl}}.


%**************************************************
%         Obtención e instalación                 *
%**************************************************

\section{Obtención e instalación}


\subsection{Obtención}

Samba se puede obtener desde internet aunque la mayoría de las distribuciones la
traen. Para obtner la última versión de Samba nos dirigimos a \sitio{http://www.samba.org}
y desde allí accedemos a uno de los múltiples servidores de réplica que
existen en el mundo.\\
En este capítulo vamos a instalar y configurar Samba en una distribución
Red Hat 7.1 aunque se tratará de dar una orientación sobre la instalación en distribuciones
con otros sistemas de paquetes, así como las especificaciones generales para su instalación
desde el código fuente.


\subsection{Instalación en diferentes formatos}


\subsubsection{Red Hat o paquetes RPM}

Obtendremos la versión para nuestro sistema operativo desde los discos de instalación
o desde \sitio{http://rpmfind.net} o sus distintos sitios de réplica, así como desde
las páginas de las distintas distribuciones. Los paquetes a obtener serán los correspondientes
a samba, samba-common y samba-client. Aunque este último no es del todo necesario.\\
La forma de instalación es la común en los casos de paquetes RPM:\\

\begin{verbatim}
rpm -i paquete_a_instalar.rpm
\end{verbatim}

\subsubsection{Debian}

Para Debian habrá que tener los \comando{source-list} bien configurados y utilizar la
cómoda herramienta de configuración provista por el sistema:
\comando{apt-get install samba}

\subsubsection{Slackware}

¿Alguien se anima a explicar su instalación?

\subsection{Instalación desde el código fuente}


%****Funcionamiento de Samba****

\section{Funcionamiento de Samba}

Samba utiliza NetBIOS sobre TCP/IP (NetBT) para entregar los cuatro servicios
SMB principales: servicios de archivo e impresión, autenticación y autorización,
resolución de nombre y visualización.

\begin{itemize}
\item Los servicios de archivo e impresión
permiten que Windows y Samba compartan ficheros e impresoras a través de la red.

\item La autenticación y autorización utilizan nombres de registro y contraseñas para
permitir a los usuarios autorizados acceder a la red.

\item La resolución de nombres consiste en convertir nombre NetBIOS en direcciones IP.

\item La visualizacion permite que otros despositivos en la red conozcan los servicios
que se encuentran disponibles.

\end{itemize}

Samba puede hacer casi todas las funciones de un Windows NT/2000 Server. Soporta
muchas de las funciones de un PDC (controlador primario de dominio) pero no es
capaz de realizar las de BDC (controlador reserva de dominio).

Tampoco permite el intercambio de datos con un servidor WINS de Microsoft.

Lo más corriente es configurar Samba en un entorno mixto UNIX/Linux Windows puesto
que Samba requiere una máquina relativamente más sencilla para realizar el trabajo
y es considerablemente más económico.

%****Configuración de un servidor Samba como un servidor NT/2000****

\section{Configuración de un servidor Samba como un servidor NT/2000}

Podemos configurar Samba de tres formas: servidor aislado en la red, añadirlo a
un dominio ya existente o configurarlo como PDC.


\subsection{Servidor Samba aislado.}

Primero se configura el servidor de forma aislada ya que esta configuración valdrá
para las otras dos configuraciones posibles.

La configuración de un servidor Samba se realiza en el fichero smb.conf que está
ubicado en /etc/samba/. En este fichero pueden distinguirse dos secciones: una
primera de parámetros globales más la configuración de impresoras y una tercera
segunda con los recursos compartidos.

En la sección de parámetros globales los más utilizados son los siguientes:

\begin{itemize}

\item  workgroup

  Nuestro grupo de trabajo o dominio NT al que conectamos y nombre de nuestro
  servidor.

\item  netbios name

  Sería el nombre de nuestro servidor.

\item  server string

  Es la descripción de nuestro servidor.

\item  hosts allow

  Permite restrigir el acceso desde las IP o rango de IP's deseadas.

\item   printcap name y load printers

  Permiten configurar automáticamente la lista de impresoras.

\item  printing

  Permite configurar el tipo de impresión. Actualmente las soportadas son:
  bsd, sysv, plp, lprng, aix, hpux, qnx.

\item  log file

  Esto dice a Samba donde generar el fichero de regsitro para cada máquina 
  que se  conecte.

\item  security

   Modo de seguridad. Los usuarios deben utilizar el modo "user". Veáse
   security\_level.txt de la documentación para más detalles.

\item   password server

   Utilizar la opción de Servidor de contraseñas sólo con seguridad = server.

\item  password level y username level

  El nivel de contraseña permite hacer correspondencia entre mayúsculas y
  minúsculas.

\item   encrypt passwords y smb passwd file

   Permite el uso de contraseña encriptada. Para más información veáse ENCRYPTION.txt,
   Win95.txt y WinNT.txt en la documentación de Samba.

\item   unix password sync, passwd program y  passwd chat

   Permite que las contraseñas Samba estén sincronizadas con las de Windows.


\item   username map

   Permite que un usuario UNIX tenga varios nombres SMB.

\item   socket options

   Permite configurar las conexiones de red para un mejor rendimiento.

\item   interfaces

   Permite que samba funcione con varias interfaces en una misma máquina.

\item   os level

   Determina la precedencia a la hora de elegir cuál es el controlador primario.

\item   domain master

   Le dice a Samba que él es el controlador primario.

\item   preferred master

   Fuerza a que Samba sea el controlador preferido.

\item   domain logons

   Permite que Samba sea un servidor de logon de un dominio para estaciones
   de trabajo Windows 95 y NT/2000.

\item   logon script

   Permite la ejecución de un guión a la entrada en sesión de un usuario o de
   una máquina del dominio.

\item   logon path

   Establece la ruta en la que se almacenan los perfiles móviles de las usuarios
   en estacuones Win95 y WinNT/2000.

\end{itemize}

En la sección de recursos compartidos nos encontramos con los directorios de
usuario (home, netlogon y profiles), las impresoras compartidas y con los
recursos compartidos.

A continuación veremos un fichero ejemplo de comfiguración de Samba:

\begin{verbatim}
  [global]
     workgroup = ejemplo.com
     netbios name = Servidor
     server string = Samba de ejemplo.com
     hosts allow = 192.168.1. 192.168.2. 127.
     printcap name = /etc/printcap
     load printers = yes
     printing = lprng
     log file = /var/log/samba/%m.log
     max log size = 0
     security = user
     password level = 8
     username level = 8
     encrypt passwords = yes
     smb passwd file = /etc/samba/smbpasswd
     unix password sync = Yes
     passwd program = /usr/bin/passwd %u
     passwd chat = *New*password* %n\n *Retype*new*password* %n\n
       *passwd:*all*authentication*tokens*updated*successfully*

     username map = /etc/samba/smbusers
     socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
     os level = 33
     domain master = yes
     preferred master = yes
     domain logons = yes
     dns proxy = no

  [homes]
     comment = Directorio Personal
     browseable = no
     writable = yes
     valid users = %S
     create mode = 0664
     directory mode = 0775

  [netlogon]
     comment = Network Logon Service
     path = /usr/local/samba/lib/netlogon
     guest ok = yes
     writable = no
     share modes = no

  [Profiles]
     path = /usr/local/samba/profiles
     browseable = no
     guest ok = yes

  [printers]
     comment = All Printers
     path = /var/spool/samba
     browseable = no
     guest ok = no
     writable = no
     printable = yes

  [publico]
     comment = Recurso Publico de ejemplo.com
     path = /home/samba
     public = yes
     writable = yes
     printable = no
     write list = @staff

  [pchome]
     comment = PC Directories
     path = /usr/local/pc/%m
     public = no
     writable = yes

\end{verbatim}

\subsection{Añadir un servidor Samaba a una red existente.}

Para añadir el servidor a una red se debe tener en cuenta si en la red ya existe
un PDC, un BDC, un servidor WINS, impresoras, etc.

Introducir Samba en un dominio Windows es relativamente fácil. Primero se debe
crear una cuenta para la máquina Samba en el dominio de Windows utilizando el
Manager de dominios de Windows NT/2000 Server como un servidor o estación aislada.
Para ello vamos al administrador de servidores, que se encuentra en las herramientas
administrativas de Windows. En el menú equipo en agregar equipo se escribe el nombre
y se hace click en agregar.

Una vez hecho esto se debe modificar el fichero smb.conf en la máquina Samba. Para
ello agregamos o cambiamos los siguentes parámetros:

\begin{verbatim}
    security = domain

    workgroup = <Nombre Dominio>

    password server = <NT_PDC> <NT_BDC> (ó * para 
                      localizarlo de forma automática)

    encrypt passwords = yes
\end{verbatim}

Después de reiniciar Samba (service smb restart) se necesita crear un ID para la
máquina (identificación de máquina) que es como los controladores de dominio
identifican los miembros. Para ello se ejecuta el siguiente comando:

\comando {        smbpasswd -j <Nombre Dominio> -r <NT PDC>}

Y nos devolverá un mensaje con el resultado de la operación.

\subsection{Samba como controlador primario (PDC).}

Samba puede actuar como PDC aunque todavía no están implementadas todas las
funciones. Las que aún no funcionan so las siguientes:

\begin{itemize}

\item  No puede crear relaciones de confianza.

\item  No permite integración PDC <-> BDC.

\item  Windows NT Access Control List (ACL) en recursos compartidos.

\end{itemize}

En este caso también se deben realizar algunas modificaciones en el fichero de
configuración:

\begin{verbatim}
    encrypt passwords = yes

    domain logons = yes

    preferred master = yes

    security = user

\end{verbatim}

Si se habilitan scripts hay que crear un recurso compartido "netlogon".
\\
El siguente paso es crear una cuenta de usuario para cada máquina cliente y
añadirla al fichero de contraseñas (smbpasswd):
\\
\comando{smbpasswd -a -m <Nombre Máquina>}
\\
Las cuentas de los usuarios también se deben añadir:
\\
\comando{smbpasswd -a <Nombre Usuario>}
\\
Una vez hecho esto se reinicia el servicio (service smb restart) y se añaden los
clientes Windows. Esto se hace igual que para conectarse a un servidor Microsoft
pero veamos un ejemplo:
\\
%Esto se coloca un poco rodado a la derecha.

\begin{verbatim}
{\t Para añadir un cliente Windows 2000 Pro nos vamos a propiedades de MI PC,
    identificación de red, una vez allí hacemos click el botón Propiedades y
    cambiamos el grupo de trabajo por el dominio y hacemos click en Aceptar.
    Ahora se abre un cuadro que pide nombre de usuario y contraseña. Le damos la
    cuenta de administración de Samba (root) y la contraseña y aceptamos. Esperamos
    a que confirme la pertenencial al dominio.}

\end{verbatim}
