En Linux existe un archivo de configuración muy interesante para establecer distintos tipos de restricciones por usuarios/grupos del sistema, el mismo es /etc/security/limits.conf.

Cada entrada del archivo debe tener la siguiente estructura:

<dominio> <tipo> <item> <valor>

Dominio

El valor de este item indica cual sería el dominio al que le va a regir la limitación. El valor de este ítem podría ser un usuario, un grupo o todos. Es importante tener conciencia de que el usuario root esta excluido de cualquier limitación que se defina a un grupo de usuarios al que pertenezca. Si fuera necesario aplicarle alguna limitación al usuario root debe realizarse utilizando root dominio.

  • Nombre de usuario.
  • @ seguido de un nombre de grupo (ej. @users).
  • El caracter ‘*’ para usarlo a forma de comodín para cualquier usuario.
  • % seguido un nombre de grupo (ej. %grupo).

Tipo

Tipo Descripción
soft Establece el valor con el que dominio inicia sesión. Y luego el usuario podrá cambiar de acuerdo a un rango menor al definido como limite hard
hard Establece el valor que el dominio no puede sobrepasar.

Items

Item Descripción
core Limita el tamaño del archivo de imagen de memoria (core file) (KB)
data Tamaño máximo de los datos (KB)
fsize Tamaño máximo de un archivo (KB)
memlock Máximo espacio de direcciones de memoria bloqueada (KB)
nofile Cantidad máxima de archivos abiertos
rss Tamaño máximo del conjunto residente (KB)
stack Tamaño máximo de la pila (KB)
cpu Tiempo máximo de CPU (MIN)
nproc Número máximo de procesos
as Límite del espacio de direcciones (KB)
maxlogins Cantidad máxima de logins para el usuario
maxsyslogins Cantidad máxima de logins en el sistema
priority La prioridad con la que se ejecutarán los procesos del usuario
locks Cantidad máxima de archivos bloqueados que puede tener el usuario
sigpending Cantidad máxima de señales pendientes
msgqueue Cantidad máxima de memoria utilizada para la cola de mensajes POSIX (bytes)
nice Máximos valores a los que puede llevarse la prioridad con nice: [-20, 19]
rtprio Prioridad máxima para tiempo real
chroot Cambiar el directorio raíz a uno diferente (Específico de Debian)

Ejemplo

Si quisiéramos definirle al usuario testing un máximo de 2 terminales, podemos incluir la siguiente línea en el /etc/security/limits.conf.

testing hard maxlogins 2

Al usuario, al intentar iniciar sesión en una tercer terminal, le informará que el acceso no está permitido.