En include/asm/resource.h tenemos la inicialización de algunas
estructuras de datos del núcleo relacionadas con límites a la cantidad de
recursos consumida por un determinado proceso; por ejemplo, el máximo número
de procesos por usuario (RLIMIT/SMALL>_NPROC) se inicializa a
MAX/SMALL>_TASKS/SMALL>_PER/SMALL>_USER, valor que en include/linux/tasks.h podemos
comprobar que se corresponde con la mitad de NR/SMALL>_TASKS (número
máximo de procesos en el sistema); en arquitecturas i86 el valor del
límite de procesos por usuario se fija a 256.
De la misma forma, el número máximo de ficheros abiertos por un proceso
(RLIMIT/SMALL>_NOFILE) se inicializa al valor NR/SMALL>_OPEN, que en
el archivo include/asm/limits.h se define como 1024.
Estos límites se pueden consultar desde espacio de usuario con la llamada
getrlimit(); esta función utiliza una estructura de datos rlimit,
definida en include/linux/resource.h, que contiene dos datos enteros para
representar lo que se conoce como límite soft o blando y límite
hard o duro. El límite blando de un recurso puede ser modificado
por cualquier proceso sin privilegios que llame a setrlimit(), ya sea
para aumentar o para disminuir su valor; por el contrario, el límite hard define un valor máximo para la utilización de un recurso, y sólo
puede ser sobrepasado por procesos que se ejecuten con privilegios de
administrador.
En el fichero include/linux/nfs.h podemos definir el puerto máximo
que los clientes NFS pueden utilizar (NFS/SMALL>_PORT); si le asignamos
un valor inferior a 1024 (puertos privilegiados), sólo el administrador de
otro sistema Unix podrá utilizar nuestros servicios NFS, de forma
similar a la variable nfs_portmon de algunos Unices.
Para cambiar los límites de los parámetros vistos aquí la
solución más rápida pasa por modificar los ficheros de cabecera del kernel, recompilarlo y arrancar la máquina con el nuevo núcleo; sin
embargo, a continuación vamos a hablar brevemente de Fork Bomb Defuser,
un módulo que permite al administrador modificar algunos de estos parámetros
sin reiniciar el sistema. Más adelante hablaremos también de los
límites a recursos ofrecidos por PAM (Pluggable Authentication
Modules), un sistema de autenticación incorporado en la actualidad a la
mayoría de Linux, así como en otros Unices.
© 2002 Antonio Villalón Huerta