💾 Archived View for moribundo.flounder.online › blog › obsd › 006_ulimit.gmi captured on 2023-03-20 at 18:13:08. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

- ENTRADA 6 -

Ulimit: modificando los límites del sistema

OpenBSD está centrado en la seguridad y en la estabilidad. Es muy conservador en cuanto a "libertades" del sistema que puedan rebajar los niveles de seguridad, ya sabes, se suele decir que el principal componente de un sistema que compromete la seguridad se halla entre el monitor y la silla.

Al igual que en GNU/Linux, una de esas medidas son los límites de las usuarias, en cuanto a número de archivos, cantidad disponible de memoria para los procesos, tamaño de la pila, etc... Por suerte los valores predeterminados se pueden cambiar, de hecho, para un equipo de escritorio, es aconsejable hacerlo, porque vienen muy muy justos.

Antes de nada, los limites actúan en varias clases, y la que nos interesa es la clase "staff" (OJO, no confundir con grupo). Primero deberemos asegurarnos de que nuestro user esté en dicha clase:

$ whoami
   Moribundo

$ userinfo Moribundo

Aquí veremos una serie de información, pero de momento nos interesa la sección "Class:" que debe apuntar a "Staff". De forma predeterminada en la instalación, OpenBSD 7.1 añade a los usuarios a esa clase, pero si no lo hiciera se puede añadir después:

usermod -L staff Moribundo

Aumentar limites generales.

Primero deberemos saber qué límites tenemos. Lo puedes saber echando un ojo a /etc/login.conf en la sección "Staff", o con el siguiente comando:

ulimit -a

Toca ir a /etc/login.conf y cambiar las opciones:

#
# Staff have fewer restrictions and can login even when nologins are set.
#
staff:\

 :datasize-cur=3072M:\
 :datasize-max=infinity:\
 :maxproc-max=512:\
 :maxproc-cur=256:\
 :stacksize-cur=32M:\
 :ignorenologin:\
 :requirehome@:\
 :tc=default:

Un ejemplo de cambio sería:

#
# Staff have fewer restrictions and can login even when nologins are set.
#
staff:\

 :datasize-cur=infinity:\
 :datasize-max=infinity:\
 :maxproc-max=1024:\
 :maxproc-cur=512:\
 :stacksize-cur=64M:\
 :openfiles-max=4096:\
 :openfiles-cur=8192:\
 :ignorenologin:\
 :requirehome@:\
 :tc=default:

Los valores están en incrementos de 1024 bytes, excepto para -t, que está en segundos, -p, que es en incrementos de 512 bytes, y -u, que es un número no escalado de número de procesos.

Aumentar limites en procesos aislados.

Si queremos mantener los límites "sanos" por defecto, podemos configurar solo los procesos que queramos. En este caso nos centramos en el tamaño máximo del segmento de datos de un proceso (modificador -d):

$ ulimit -d
  89100

Considero que es poco, así que le doy un nuevo valor temporal:

$ ulimit -d 95462
$ ulimit -d
   95462
NOTA: datasize-cur es el límite actual y datasize-max la cantidad permitida a aumentar desde datasize-cur. Si no se respeta nos dará error "limit exceeds"

Puedo hacerme un alias para modificar en la sesión actual el uso que hace Firefox de los recursos:

alias firefox='ulimit -d 95462; firefox'

Hay que tener en cuenta que esto no modifica /etc/login.conf, si no que solo cambia los valores para la sesión actual y se perderán cuando reinices.

Tags #openbsd

◄ Listado de artículos

â—„â—„ Inicio