💾 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
-=-=-=-=-=-=-
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
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.
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