Configuración de Samba

El siguiente paso es compartir los directorios para que los usuarios puedan acceder a los contenidos de las carpetas. Con este fin vamos a configurar el servicio samba para que nuestro Linux actúe como servidor principal de dominio .

Fichero /etc/smb.conf

La configuración se realiza en el fichero /etc/samba/smb.conf. El fichero consta de secciones y ``parámetros''. Una sección comienza con el nombre de sección, entre corchetes, y continúa hasta el comienzo de la siguiente sección. Las secciones contienen

``parámetros'' de la forma nombre=valor.

Sintaxis

  • El fichero tiene formato de línea, esto es, cada fin de línea representa bien un comentario, bien una sección o bien un parámetro.

  • Los nombres de secciones y ``parámetros'' son indistintos en mayúsculas o minúsculas.

  • Sólo el primer signo igual de un parámetro es significativo. Los espacios en blanco antes o después del igual se descartan.

  • Los espacios en blanco iniciales, internos y finales son irrelevantes. Los iniciales y finales se descartan. Los espacios en blanco interiores se guardan literales.

  • Cualquier línea que comience por punto y coma (;) o el carácter '#' se ignora, así como la que sólo contenga espacios en blanco. Es habitual considerar las líneas que comienzan por '#' como comentarios y usar el punto y coma (;) para deshabilitar líneas que no nos interese borrar. De todas formas esto queda al gusto del administrador.

  • Cualquier línea que que termine en \ continúa en la siguiente línea, como es habitual en Unix.

  • Los valores que hay a continuación de los signos iguales son cadenas (no necesitan comillas) o un valor lógico (booleano), que puede ser yes/no, 0/1 o true/false.

  • No impora si los valores lógicos se ponen en mayúsculas o minúsculas, pero se conserva en los valores de cadena.

  • Algunos elementos como los modos de creación son numéricos.

1.5. SUSTITUCIÓN DE VARIABLES

Muchas de las cadenas se pueden actualizar desde el fichero de configuración mediante sustituciones. Por ejemplo, la opción ``path''= /tmp/%u sería interpretada como "path=/tmp/juan" si el usuario está conectado con el nombre juan.

Estas sustituciones se aprecian mejor en las descripciones posteriores, pero hay algunas sustitciones generales que se aplican cuando pueden ser relevantes. Estas pueden ser:

  • %S = el nombre del servicio activo.

  • %P = el directorio raíz del servicio activo.

  • %u = nombre de usuario del servicio activo.

  • %g = nombre de grupo primario de %u

  • %U = nombre se usuario de sesión (el nombre de usuario que el cliente quiere no es necesariamente el mismo que obtiene)

  • %G = prnombre de grupo primario de %U

  • %H = directorio home del usuario dado por %u

  • %v = versión de Samba

  • %h = el nombre del host que ejecuta Samba

  • %m = nombre netbios de la máquina cliente (muy útil)

  • %L = nombre netbios del servidor. Esto permite modificar su fichero de configuración basado en lo que pide el cliente. Su servidor puede tener una personalidad dual.

Más adelante vermos algunos ejemplos de sustitución, pero como muestra vemos el siguiente ejemplo:

config file= %m.%u.conf

Esta línea incluidas en el fichero de configuración harían que se incluyeran configuraciones particulares del servidor según la máquina desde la que realizamos la conexión (%m) y según el cliente que inicia la sesión (%u). En este caso si se conecta el cliente jose desde la máquina secretaría, al lanzar el servicio incluiría el contenido de los ficheros secretaria.jose.conf. El resto de usuarios y máquinas no se verían afectadas por la configuración de estos ficheros.

Descripciones de los servicios

Cada sección del fichero de configuración describe un recurso compartido o servicio (salvo la sección ``[global]''). El nombre de sección es el nombre de servicio y los ``parámetros'' de la sección definen los atributos del servicio.

Hay tres secciones especiales ``[global]'' ``[homes]'' y ``[printers]'', que se desciben en ``secciones especiales''. Las siguientes notas se aplican a la descripción de servicios ordinarios.

  • Un servicio consiste en un directorio al cual se proporciona acceso más una descripción de los derechos de acceso que se ofrecen a los usuarios del servicio.

  • También se pueden especificar opciones de mantenimiento.

  • Los servicios son bien servicios de espacio para ficheros (usados por los clientes como extensions de sus sistemas de archivos nativos) o servicios de impresión (utilizados por los clientes para acceder a las impresoras de las que dispone el servidor).

  • Los servicios pueden ser para invitados (guest), en cuyo caso no se necesita clave para acceder. Se usa una cuenta de invitados para definir los privilegios de acceso en este caso.

  • Tenga en cuenta que los derechos de acceso proporcionados por el servidor, se comparan con los derechos de acceso especificados o de la cuenta de invitados usados por el sistema. El servidor no ofrece más derechos de acceso de los que garantiza el host del sistema.

El siguiente ejemplo de sección define un servicio de espacio para ficheros. El usuario tiene derechos de escritura en la ruta /home/bar. El acceso al servicio de realiza a través del nombre del servicio datos:

[datos]

                   path = /home/bar
                   writable = true

El siguiente ejemplo de sección define un servicio de impresión. El servicio es de sólo lectura, pero imprimible. Es decir, el único acceso de escritura permitido el mediante llamadas a open, escribir y cerrar un fichero de spool. El parámetro ``guest ok'' significa que se permite acceso como usuario invitado por defecto (especificado en cualquier lugar):

[unaimpresora]

                   path = /usr/spool/public
                   read only = true
                   printable = true
                   guest_ok = true

La sección global

Los ``parámetros'' de esta sección se aplican a todo el servidor, o son por defecto para los servicios que no definen de forma específica ciertos elementos. Por ejemplo el parámetro WORKGROUP que define el nombre del dominio o grupo de trabajo es un parámetro global porque afecta a todo el servidor.

La sección homes

Si existe una sección denominada homes incluida en el fichero de configuración, los clientes se podrán conectar a su directorio HOME del servidor.

Cuando efectúa una solicitud de conexión, se comprueban los servicios existentes. Si alguno se verifica entonces se usa. Si no se encuenta ninguno, la solicitud de servicio se trata como un nombre de usuario y se busca en el fichero passwd local. Si el nombre existe y la clave es correcta, se crea un servicio mediante un duplicado de la sección

[homes].

Se efectúan algunas modificaciones en la sección recientemente creada:

  • El nombre de servicio se cambia de "homes" al nombre local del usuario.

  • Si no se sumistra ``path'', se usa el directorio home del usuario.

  • Si decide uar una línea ``path''= en su sección homes entonces encontrará útil la macro %S. Por ejemplo, path=/data/pchome/%S sería útil si tiene diferentes directorios home en su equipo, además del propio de Unix.

  • Esta es una forma rápida y sencilla de suministrar acceso a gran número de clientes a sus directorios home con un mínimo de preocupaciones.

  • Si el nombre de recurso solicitado es "homes" ocurre un proceso similar, salvo que no se modifica el nombre de recurso a petición del usuario. Este método de uso de la sección ``[homes]'' funciona bien si diferentes usuarios comparten un equipo cliente.

  • La seción [homes] puede especificar todos los ``parámetros'' de sección de un servicio normal, aunque unos tienen más sentido que otros.

Lo siguiente es un ejemplo típico de sección [homes]:

                 [homes]
                      writable = yes

Un punto importante:

Si se especifica el acceso de invitados en la sección ``[homes]'', todos los directorio home serán accesibles por todos los clientes, sin clave. En el caso poco probable de que esto sea deseable, también sería posible especificar acceso de sólo lectura.

Observe que la bandera ``browseable'' para los directorios home automáticos se heredará de la bandera browseable global, no la bandera browseable ``[homes]''. Esto es útil porque significa que poner browseable=no en la sección ``[homes]'' esconderá el servicio homes, pero lo hará visible el auto directorio home.