Antes de empezar, necesitamos advertirte de que si estás conectando Samba con un Windows 98 o NT Workstation SP3, necesitas configurar tu servidor para utilizar contraseñas encriptadas antes de que puedas hacer la conexión, de otra forma, el cliente rechazará conectarse al servidor Samba. Esto se debe a que estos clientes Windows envían contraseñas encriptadas y Samba necesita ser configurado para esperarlas y desencriptarlas. Te enseñaremos como hacerlo mas adelante, en este mismo capítulo, suponiendo que no lo hayas abordado ya en el Capítulo 2, Instalando Samba en un Sistema Unix.
Vamos a empezar con un solo usuario. La forma más fácil de configurar un cliente es crear una cuenta Unix (y su directorio personal correspondiente) para es cliente en el servidor, y notificar a Samba la existencia de ese usuario. Posteriormente en el fichero de configuración de Samba se creara un recurso de disco compartido que apunte al directorio personal del usuario y restringiremos su acceso a traves de la opcion valid users. Por ejemplo:
[dave]
path = /home/dave
comment = Dave's Home Directory
writeable = yes
valid users = dave
La opción valid users especifica que usuarios pueden tener acceso al recurso compartido. En este caso sólo el usuario dave es autorizado a acceder a él. En los capitulos anteriores, especificamos que cualquier usuario podía acceder a un recurso compartido de disco usando el parametro guest ok. Como nosotros no queremos conceder acceso de invitado, esta opción está ausente. Podemos dar ambos derechos de acceso, el de usuarios autenticados e invitados a un recurso específico si asi lo deseamos. La diferencia entre ambos radica en los derechos de acceso para cada uno de los ficheros.
Recuerda que puedes referirte al directorio personal del usuario usando la variable %H. Además, también puedes utilizar las variables de nombre de usuario Unix %u y de nombre de usuario cliente %U en las opciones. Por ejemplo:
[dave]
comment= %U home directory
writeable = yes
valid users = Dave path = %H
Estos dos ejemplos funcionan mientras el usuario Unix que Samba utiliza para referirse al cliente tiene derechos de lectura/escritura sobre el directorio referenciado por la opcion path. En otras palabras, un cliente debe, primero, pasar los mecanismos de seguridad de Samba (por ejemplo, las contraseñas encriptadas, la opción valid users, etc...) así como los permisos sobre ficheros y directorios normales de Unix en el lado Unix de su usuario, antes de que pueda tener acceso de lectura/escritura a un recurso compartido.
Con un solo usuario accediendo a su directorio personal, nos ocupamos de los permisos de acceso cuando el sistema operativo crea la cuenta de usuario. En cualquier caso, si estás creando un directorio compartido para acceso de grupo, hay varios pasos adicionales que has de realizar. Vamos a echar un vistazo a un recurso compartido para el departamento de Contabilidad en el fichero smb.conf:
[accounting]
comment = Accounting Department Directory
writeable = yes
valid users = @account
path = /home/samba/accounting
create mode = 0660
directory mode = 0770
La primera cosa que notarás que hemos hecho de distinta forma es especificar @account como el usuario válido en lugar de uno o más nombres de usuario individuales. Este es un atajo para decir que los usuarios válidos están representados por el grupo Unix account. Estos usuarios necesitan ser añadidos al grupo account en el fichero de grupos del sistema (/etc/group o equivalente) para ser reconocidos como parte del grupo. Una vez que lo son, Samba los reconocerá como usuarios válidos para el recurso compartido.
A mayores, necesitarás crear un directorio compartido para que los miembros del grupo tengan acceso, que será mapeado a través de la opción de configuración path. Estos son los comandos Unix que crearán el directorio compartido para el departamento de Contabilidad (suponemos que /home/samba ya existen).
# mkdir /home/samba/accounting
# chgrp account /home/samba/accounting
# chmod 770 /home/samba/accounting
Hay otras dos opciones en el fichero smb.conf del ejemplo, que ya hemos visto en el capítulo anterior. Estas opciones son: create mode y directory mode. Señalan los máximos permisos de ficheros y directorio que un nuevo fichero o directorio pueden tener. En este caso, hemos denegado el acceso global a los contenidos de ese recurso (esto es reforzado por el comando chmod, que ya hemos visto antes).
[[ El recurso compartido [homes]]]
Vamos a volver a los recursos compartidos de usuario por un momento. Si tenemos varios usuarios a los que dar acceso compartido a sus directorios personales, probablemente queramos utilizar el recurso compartido especial [homes] del que hablamos en el Capitulo 5, Navegación y Comparticiones Avanzadas de Unidades de Disco. Con este recurso todo lo que necesitas decir es:
[homes]
browseable = no
writable = yes
El recurso compartido especial [homes] es una sección especial del fichero de configuración de Samba. Si un usuario intenta conectar a un recurso compartido ordinario que no aparece en el fichero smb.conf (como especificándolo con un UNC en Windows Explorer), 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 (/etc/passwd o equivalente) del servidor Samba. Si aparece, Samba asume que el cliente es un usuario Unix intentando conectar a su directorio personal.
A modo de ejemplo, supongamos que sofia esta intentando conectar a un recurso compartido llamado [sofia] en el servidor Samba. No hay un recurso compartido con ese nombre en el fichero de configuración, pero si existe un recurso compartido [homes] y el usuario sofia está presente en la base de datos de contraseñas, por lo que Samba sigue los pasos siguientes:
- Samba crea un nuevo recurso compartido llamado [sofia] con el path especificado en la seccion [homes]. Si no hay una opción path especificada en la sección [homes], Samba la inicializa a su directorio personal.
- Samba inicializa las opciones del nuevo recurso a partir de las opciones por defecto de la sección [globals], y cualquier opción superior en [homes] con la excepción de browseable.
- Samba conecta al cliente sofia a este nuevo recurso.
El recurso [homes] es una forma rápida y limpia de crear recursos compartidos para tu comunidad de usuarios sin tener que duplicar la información de la base de datos de contraseñas en el fichero smb.conf. Pero hay varios detalles que hemos de tener en cuenta:
- La sección [homes] puede representar cualquier cuenta en la máquina, lo que no es siempre deseable. Por ejemplo, podría crear un recurso compartido para root, bin, sys, uucp y similares. (Puedes establecer una opción invalid users para protegerte frente a esto).
- El significado de la opción browseable es diferente de los otros recursos; indica sólo que la sección [homes] no aparecerá en la lista local de exploración, pero no que el recurso [alice] no lo hará. Cuando se crea la sección [alice] (despues de la conexión inicial), usara el valor browseable de la sección [globals] para ese recurso y no el de la sección [homes].
Como mencionamos, no hay necesidad de una opción path en [homes] si los usuarios tienen directorios personales Unix en el fichero /etc/passwd del servidor. Has de asegurarte de que exista un directorio personal válido, de todas formas, Samba no creará automáticamente un directorio personal para un usuario, y rechazará una conexión si el directorio personal del usuario no existe o no es accesible.