Solución «cannot set user id: Resource temporarily unavailable»

Hoy un artículo muy práctico, que añado a la web para tenerlo siempre a mano y si encima alguna vez os sirve, pues mejor que mejor. Se trata de un caso que me ha sucedido hoy en el trabajo. Resulta que tenía que realizar una serie de tareas en un servidor utilizando un usuario en concreto. La cuestión es que cuando quería acceder, utilizando «su – usuario» no podía, ya que me muestraba el error: «su: cannot set user id: Resource temporarily unavailable» Veamos como lo solventé.

Investigando un poco por la red, allé la solución. Resulta que el usuario en cuestión había superado el número máximo de procesos que podía utilizar, por lo que al intentar acceder a su consola (esto abre un proceso más) me mostraba el error mencionado anteriormente. Para solventarlo debemos utilizar el comando ‘ulimit‘ o bien modificar el fichero /etc/security/limit.conf.

En mi caso añadí un número máximo de procesos para el usuario, bastante elevado:

  1. usuario        -       nproc          158735

Con ‘nproc‘ indicamos el número máximo de procesos que puede llegar a utilizar el usuario. Otro parámetro interesante es ‘nofile‘, que es el número máximo de ficheros que puede abrir dicho usuario.

¿Y ya está? Venga un poco, vamos a ver cómo trabajar, brevemente, con ‘ulimit‘ Primero de todo hay que tener en cuenta, que para el número máximo de procesos o de ficheros abiertos, tenemos un número ‘soft’ y un número ‘hard’. Podemos ver como lo tenemos para nuestro usario, utilizando:

  1. #Ver el número soft
  2. ulimit -Sn
  3. #Ver el número hard
  4. ulimit -Hn

Si queremos cambiar los números que se nos muestran, tal y cómo hemos indicado al principio, debemos modificar el fichero /etc/security/limit.conf

Si os ha interesado el tema puedo realizar un artículo más amplio al respecto. Me lo podéis indicar en los comentarios 🙂

Igualmente, hay muy bueno artículos sobre el tema en castellano, aquí os dejo un par:

rm-rf.es | systenadmin.es