Con frecuencia, por razones de seguridad, necesitarás restringir los usuarios que pueden acceder a un determinado recurso compartido. Esto es muy fácil de hacer con Samba, dado que contiene gran cantidad de opciones para crear prácticamente cualquier configuración de seguridad. Vamos a estudiar una serie de configuraciones que te pueden interesar para crear la tuya propia.
Como ya dijimos, si estás conectando con Windows 98 o Windows NT 4.0 con el Service Pack 3.0 (o superior), tienes que tener en cuenta que estos clientes enviarán contraseñas encriptadas al servidor Samba. Si Samba no está configurado para recibirlas, rechazará la conexión continuamente. Este capítulo describe como configurar Samba para utilizar contraseñas encriptadas. Ve a la sección de 'Contraseñas'.
Hemos visto que ocurre cuando especificas usuarios válidos. Sin embargo, también puedes establecer una lista de usuarios no válidos -usuarios a los que nunca les será permitido acceder a Samba o a sus recursos. Esto se hace con la opción invalid users. Anteriormente hemos apuntado a un uso frecuente que se le da a esta opción: Un valor por defecto relacionado con la sección [homes] para asegurar que determinados usuarios y superusuarios del sistema no pueden ser manipulados o alterados para conseguir acceso a éste. Por ejemplo:
[global]
invalid users = root bin daemon adm sync shutdown \
halt mail news uucp operator gopher
auto services = dave peter bob
[homes]
browsable = no
writeable = yes
La opción invalid users, como la valid users, puede utilizar tanto nombres de grupo como nombres de usuario. En el caso de que un usuario o grupo apareciese en ambas listas, la opción invalid users tendría preferencia por lo que a ese usuario o grupo se le denegaría el acceso al recurso.
En el otro extremo, puedes especificar, de forma explícita, a que usuarios se les va a conceder acceso de superusuario (root) a un recurso, a través de la opción admin users. Por ejemplo:
[sales]
path = /home/sales
comment = Fiction Corp Sales Data
writeable = yes
valid users = tom dick harry
admin users = mike
Esta opción admite también nombres de grupo y de usuario. Además puedes especificar grupos NIS precediéndolos con un símbolo @;si este grupo no se encuentra, Samba asumirá que te refieres a un grupo estándar de Unix.
Se cuidadoso al asignar a un grupo privilegios administrativos sobre un recurso. El equipo desarrollador de Samba recomienda encarecidamente evitar el uso de esta opción, porque en esencia lo que hace es dar derechos de superusuario sobre ese recurso a los usuarios o grupos especificados.
Si deseas forzar derechos de solo-lectura o solo-escritura a los usuarios que acceden a un recurso, puedes hacerlo con las opciones read list y write list, respectivamente. Estas opciones pueden ser usadas para restringir el acceso a un recurso que tenga derechos de escritura, o para dar derechos de escritura a determinados usuarios sobre un recurso creado como de solo-lectura, respectivamente. Por ejemplo:
[sales]
path = /home/sales
comment = Fiction Corp Sales Data
read only = yes
write list = tom dick
La opción write list no prevalece sobre los permisos de Unix. Es decir, si tú creaste el recurso sin dar a los usuarios de la lista write list permisos de escritura sobre el sistema Unix, les será denegado ese derecho independientemente del valor de la opción write list.
Acceso de Invitado
Como mencionamos antes, tú puedes especificar que usuarios van a tener acceso de invitado a un recurso. Las opciones que controlan este tipo de acceso son fáciles de utilizar. La primera, guest account, señala la cuenta Unix que se asignará a los usuarios invitados cuando conecten con el servidor Samba. El valor por defecto para esta opción se establece durante la compilación, y normalmente es nobody. De todas formas, puedes establecer el valor de usuario invitado a ftp si tienes problemas accediendo a varios servicios del sistema.
Si quieres restringir el acceso, en un recurso determinado, sólo a los usuarios invitados - dicho de otra forma, todos los usuarios se conectarán como usuarios invitados cuando accedan a ese recurso - puedes utilizar la opción guest only unida a la opción guest ok, como muestra el siguiente ejemplo:
[sales]
path = /home/sales
comment = Fiction Corp Sales Data
writeable = yes
guest ok = yes
guest account = ftp
guest only = yes
Asegúrate de que especificas yes tanto para guest only como para guest ok; de otra forma, Samba no usará la cuenta de invitado que has indicado.
Opciones de control de acceso
La Tabla 6-1 resume las opciones que puedes utilizar para controlar el acceso a los recursos.
Table: Control de Acceso a los Recursos.||
Table: Control de Acceso a los Recursos.|| Opcion || Parámetros || Función || Defecto || Ámbito || || admin users || Cadena (lista de nombres de usuario). || Indica la lista de usuarios que pueden efectuar operaciones como "root". || Ninguno || Recurso || || valid users || Cadena (lista de nombres de usuario). || Indica la lista de usuarios que pueden conectarse a un recurso. || Ninguno || Recurso || || invalid users || Cadena (lista de nombres de usuario). || Indica la lista de usuarios que NO tendrán acceso a un recurso. || Ninguno || Recurso || || read list || Cadena (lista de nombres de usuario). || Indica la lista de usuarios que tendrán únicamente derecho de solo-lectura sobre un recurso modificable. || Ninguno || Recurso || || write list || Cadena (lista de nombres de usuario). || Indica la lista de usuarios que tendrán derecho de lectura-escritura sobre un recurso de solo-lectura. || Ninguno || Recurso || || max connections || Valor numérico. || Indica el máximo número de conexiones permitidas para un recurso en un momento dado. || || Recurso || || guest only (only guest) || Valor lógico (Si/No). || Indica si ese recurso permite solo acceso de invitado. || no || Recurso || || guest account || Cadena (nombre de una cuenta). || Indica la cuenta que se utilizará para el acceso de invitado. || nobody || Recurso || ||
La opción Admin users
Esta opción establece una lista que usuarios que realizaran sus operaciones sobre los ficheros como si fueran root. Esto significa que pueden modificar o destruir cualquier trabajo de otro usuario, no importa cuales sean los permisos. Cualquier fichero que creen pertenecerá a root y usará el grupo por defecto del usuario administrador. La opción admin users se usa para conceder a los usuarios PC actuar como administradores para determinados recursos. Te recomendamos que evites el utilizar esta opción.
Valid users e invalid users
Estas 2 opciones te permiten indicar los usuarios y grupos que tienen o no tienen acceso a un determinado recurso. Puedes utilizar una lista de usuarios separados por comas, o indicar un grupo NIS o Unix que ira precedido con el símbolo de la arroba @.
La regla más importante que has de recordar sobre estas dos opciones es que, a cualquier usuario o grupo que aparezca en la lista invalid users le será denegado el acceso, aunque esté incluido (sea cual sea la forma) en la lista valid users. Ninguna de estas opciones tiene un valor por defecto. Si las dos opciones no tienen valor, se le permitirá el acceso al recurso a cualquier usuario.
Read list y write list
Como las opciones valid users e invalid users, este par de opciones indican qué usuarios tienen derechos de solo-lectura sobre un recurso modificable y derechos de lectura-escritura sobre un recurso de solo-lectura, respectivamente. El valor de estas opciones es una lista de usuarios. Read list tiene preferencia sobre cualquier otro permiso Samba concedido - también sobre los permisos sobre ficheros en el servidor - para denegar a los usuarios el derecho de escritura. Write list tiene preferencia sobre otros permisos Samba para conceder derechos de escritura, pero no puede darlos si el usuario carece de ellos en el sistema Unix. Puedes especificar nombres de grupo Unix o NIS utilizando como prefijo la arroba @ (como por ejemplo @users). Ninguna de las dos opciones tiene asociado un valor por defecto.
Max connections
Esta opción establece el máximo numero de conexiones clientes que puede tener un recurso en un determinado momento. Cualquier conexión que se intente establecer una vez alcanzado el máximo será rechazada. El valor por defecto es 0, que indica que se permite un numero ilimitado de conexiones. Puedes anular este valor para un recurso de la forma siguiente: [accounting] max connections = 30.
Esta opción es útil en el caso de que necesites limitar el numero de usuarios que están accediendo a la vez a un programa con licencia o a un dato determinado. Guest only.
Esta opción a nivel de recurso (algunas veces llamada only guest) obliga a que una conexión con un recurso se haga a través del usuario que establece la opción guest account. El recurso al que se aplique esta opción debe especificar de forma explícita guest ok=yes para que la opción sea reconocida por Samba. El valor por defecto es no.
Guest account
Esta opción establece el nombre de la cuenta que se utilizará para el acceso de invitado a los recursos de Samba. Su valor por defecto varia de un sistema a otro, pero normalmente se establece a nobody. Algunos cuentas de usuario por defecto tienen problemas conectando como usuarios invitados. Si esto ocurre en tu sistema, el equipo Samba recomienda usar la cuenta ftp como cuenta de invitado.
Opciones de usuario
La tabla 6-2 muestra dos opciones adicionales que Samba puede utilizar para corregir las incompatibilidades entre nombres de usuario Unix y Windows.
Table: Opciones Adicionales.|| Opcion || Parámetros || Función || Defecto || Ámbito ||
|| username map || Cadena (Ruta completa al fichero) || Indica el nombre del fichero de mapas de usuario || Ninguno || Global ||
|| username level || Valor numérico || Indica el número de letras mayúsculas que se utilizarán al intentar localizar un nombre de usuario || || Global ||
Username map
Los nombres de usuario cliente en una red Samba puede ser bastante largos (hasta 255 caracteres), mientras que los nombres de usuario en redes Unix no pueden tener más de 8 caracteres. Esto significa que un usuario individual puede tener un nombre de usuario en un cliente y otro (más corto) en el servidor Samba. Puedes solucionar esto mapeando un nombre de usuario de formato libre a un nombre de usuario Unix de 8 o menos caracteres. Este mapeado se graba en un fichero de texto estándar, usando un formato que explicaremos pronto. Hecho esto, indicarás la ruta a Samba mediante la opción global username map. Asegúrate de restringir acceso a este fichero; establece su propietario a root y deniega el acceso de escritura a los demás. De no hacerlo así, un intruso que pueda acceder a ese fichero podría mapear su nombre de usuario al usuario root del servidor Samba.
Puedes especificar esta opción como sigue:
[global]
username map = /etc/samba/usermap.txt
Cada una de las entradas en el fichero de mapeado de usuarios debe seguir el formato siguiente: El nombre de usuario Unix, seguido por un signo igual (=), seguido por uno o más nombres de usuario cliente separados por espacios. Ten en cuenta que a menos que se indique lo contrario (por ejemplo, en una conexión de invitado), Samba esperará que los dos usuarios tengan la misma contraseña. También puedes mapear grupos NT a uno o más grupos Unix usando el símbolo de arroba @. Algunos ejemplos serían:
jarwin = JosephArwin
manderso = MarkAnderson
users = @account
Además, puedes usar el asterisco para especificar un comodín que indique cualquier nombre de usuario cliente como una entrada en el fichero de mapa de usuarios:
Nobody = *
Se pueden incluir comentarios en el fichero precediendo las líneas con los símbolos (#) y (;).
Ten en cuenta que también puedes utilizar este fichero para redirigir un usuario Unix a otro usuario. Ten cuidado al hacerlo porque Samba y tu cliente no avisarán de esto al usuario y Samba puede estar esperando otra contraseña distinta.
Username level
Los clientes SMB (como Windows) normalmente envían los nombres de usuario en la conexión Samba en mayúsculas, es decir, los nombres de usuario no son necesariamente sensibles a la diferencia entre minúsculas y mayúsculas. En un servidor Unix, si lo son: el usuario ANDY es distinto del usuario andy. Por defecto, Samba se enfrenta a esto haciendo lo siguiente:
- Buscando una cuenta de cliente con el nombre exacto enviado por el cliente.
- Comprobando el nombre de usuario en minúsculas.
- Comprobando el nombre de usuario en minúsculas con la primera letra en mayúsculas.
Si deseas que Samba intente más combinaciones de minúsculas y mayúsculas, puedes usar la opción de configuración global username level. Esta opción toma un valor entero que especifica cuantas letras en el nombre de usuario serán pasadas a mayúsculas al intentar conectar con un recurso. Puedes establecer estas opciones como sigue:
[global]
username level = 3
En este caso, Samba intentará todas las permutaciones de nombres de usuario que pueda teniendo tres letras mayúsculas. Cuanto mayor sea el número, más cálculos deberá hacer Samba para comprobar el nombre y tanto más durará la autenticación.