linux shell ubuntu-12.04

linux - comando no encontrado al usar sudo ulimit



shell ubuntu-12.04 (2)

He tenido que lidiar con este tipo de problemas en el pasado. Como no hay un mecanismo setuid para los scripts de shell (porque es inseguro), he encontrado que escribir un contenedor C simple con un setuid es suficiente y luego usar una llamada al sistema para modificar los límites del proceso en ejecución antes de eliminar los privilegios y ejecutar su shell guión.

Estaba usando ubuntu 12.04, en la que ejecuto ulimit -n, muestra 1024, deseo aumentar mi límite de archivo abierto de 1024 a 65535, así que probé el siguiente comando:

sudo ulimit -n 65535

pero me sale el siguiente error:

sudo: ulimit: command not found

¿Cómo aumentar el límite de archivos de 1024 a 65535? Cualquier ayuda será apreciada.


ulimit es un shell incorporado como cd , no un programa separado. sudo busca un binario para ejecutarse, pero no hay un binario ulimit , por lo que aparece el mensaje de error. Necesitas ejecutarlo en un shell.

Sin embargo, aunque debe ser root para aumentar el límite a 65535, probablemente no desee ejecutar su programa como root. Entonces, después de elevar el límite, debes volver al usuario actual.

Para hacer esto, ejecute:

sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"

y obtendrá un nuevo shell, sin privilegios de root, pero con el límite elevado. El exec hace que el nuevo shell reemplace el proceso con los privilegios de sudo , por lo que después de salir de ese shell, no volverá a ser accidentalmente como root.