El Sábado, 21 de Abril de 2007 21:03, Camaleón escribió:
El 21/04/07, Ryouga Hibiki escribió:
Pues si, es de lo mas interesante, segun lo que entendi... el bucle esta en
Sí, eso entendí también de la explicación. En SuSE el usuario ha iniciado una sesión en bash y puede introducir comandos y ejecutar funciones, en este caso iterativas (bucle).
De la explicación del correo, entiendo lo siguiente: :() # crea la función sin parámetros (que irían dentro del paréntesis)
{ # inicio de la función
:|:& # comando a ejecutar, en este caso los dos puntos, la barra y los
dos puntos crean procesos en el sistema de forma recursiva (¿pero qué tipo de procesos?) y el símbolo de "ampersand" los pone en segundo plano para que si el proceso padre finaliza no lo haga el proceso hijo.
}; # finaliza la función
: # inicia la función :
los ejemplos en Wikipedia aclaran algo acerca de como trabaja el programa, me interesa saber cual es la diferencia entre () y {} es que uno es para indicar los parametros de entrada de la funcion y lo que esta entre llaves es lo que hace el programa? (osea como en C)
Depende del lenguaje de programación (bash en este caso) cada uno suele utilizar símbolos concretos, pero en este caso es como dices: paréntesis para crear la función y corchetes para definir el comando a ejecutar. En javascript también se utilizan de la misma forma.
Osea funcion :() {
:|:& /*invoca la salida de : para : y usa &
};
: <-- ?? para que es esta parte? juas ya me hice bolas =P~ es cuando se
realiza la invocacion parece.
=S me hace acordar aquellos tiempos cuando estab aprendiendo a programas =)~
Muchisimas gracias por la aclaracion y comentarios que se hagan, interesante que las iteraciones y recursividad todavia puedan matar una PC
Sí, tendría haber un monitor de procesos desbocados que impida la creación de nuevos en el sistema si se ve comprometida su estabilidad. No es lo mismo tumbar un servicio (servidor web) que el sistema completo... aunque también es verdad que propio el sistema es un servicio más.
En el documento de la Wikipedia sugieren limitar el número de procesos que puede ejecutar un usuario para evitar este tipo de ataques.
¿Eso dónde se controla? ¿Se puede controlar desde /etc/security/limits.conf? Sé que existe en ese fichero un item que se llama nproc para limitar el número de procesos, pero ¿qué valor hay que darle a un usuarios normal, por ejemplo yo mismo, y qué formato debe tener para un usuario local? ¿Existe alguna otra forma? A ser posible gráfica; no he visto nada en el YAST para limitar el número de procesos. La pregunta es para quien sepa contestarla. -- Saludos. HP Compaq nx9420 OpenSUSE 10.2 (KDE) Linux 2.6.18.8-0.1-default x86_64