Vous êtes sur la page 1sur 3

2013 Eugenia Bahit www.eugeniabahit.

com Bajo Licencia Creative Commons BY-NC-SA

Th e Or i g i n a l Ha c k e rwww. o r i g i n a l h a c k e r . o r g

18

D ES O F T W A R E : A G R E G A D OD EA R C H I V O S C R O NYE J E C U C I N P E R I D I C AD EP R O C E S O SE N L O SP A Q U E T E S. D E B
E S T A S E R I ED EP A P E R SQ U E
C O M E N Z E N L A E D I C I N N R O .1 1D EL AR E V I S T A H A C K E R S & D E V E L O P E R S M A G A Z I N E E X P L I C A N D O C M O C R E A RP A Q U E T E S D E B I A N Y C O N T I N U E N L A E D I C I N A N T E R I O R D ET H E O R I G I N A L H A C K E RH A B L A N D O A C E R C A D EC M O D E S A R R O L L A R A R C H I V O SP R E Y P O S TI N S T A L A C I N P R O P I O S ,C O M I E N Z AA L L E G A R AS U F I N E NE S T A E N T R E G A ,E NL AQ U EM E C O N C E N T R A R E NL A N E C E S I D A D D E N U E S T R A S A P L I C A C I O N E S D E I N C L U I R L A E J E C U C I N P E R I D I C A D E P R O C E S O S Q U EP A R A C O R R E R ,R E Q U I E R A N A L M A C E N A R S E E NL O S D I R E C T O R I O S / E T C / C R O N . *
uando desarrollamos aplicaciones, frecuentemente incluimos instrucciones, sugerencias y hasta incluso directivas de mantenimiento en archivos README o en la documentacin de nuestro Software. Sin embargo, incluso aunque el pblico objetivo de nuestros desarrollos sean profesionales de los sectores IT, toda instruccin, directiva o sugerencia que requiera ser ejecutada post-instalacin, suele ser ignorada, sobre todo, si la misma necesita ser llevada a cabo en ms de una oportunidad. Tanto Debian como sus distros derivadas, son capaces de ejecutar tareas especficas de forma peridica, que van ms all de la programacin de tareas mediante crontab. Dichas tareas son ejecutadas por el propio Sistema Operativo, cada hora, diaria, semanal o mensualmente y las mimas, se encuentran especificadas en guiones de shell ejecutables, alojados en los directorios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly y /etc/cron.monthly. De all que, por ejemplo, tareas de limpieza, depuracin y mantenimiento de la base de datos de una aplicacin (como la que vimos en el artculo de emulacin de tokens temporales 1 en la edicin pasada), tranquilamente podran efectuarse mediante un cron.daily - agregado al paquete .deb -, liberando as al usuario de tener que programar dicha tarea manualmente.

I N G E N I E R A

Artculo Emulacin de tokens de seguridad temporales para el registro de usuarios (The Original Hacker N 1): http://library.originalhacker.org/biblioteca/articulo/ver/115

2013 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA

Th e Or i g i n a l Ha c k e rwww. o r i g i n a l h a c k e r . o r g

19

L O SA R C H I V O SC R O N . *YS UF O R M A T O
Los archivos cron.*, como coment unos prrafos ms arriba, son guiones de shell ejecutables. Estos archivos se alojan en las diversas carpetas /etc/cron.* bajo el nombre de la aplicacin. Es as, que por ejemplo, en la carpeta /etc/cron.daily encontraremos archivos cuyos nombres sern apache2, dpkg, sendmail o apt, entre otros. Cada carpeta cron.* est destinada a almacenar guiones que se ejecutarn bajo un mismo perodo de tiempo. Muy intuitivamente, la relacin carpeta-perodo es la siguiente:

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

cada hora diariamente semanalmente mensualmente

Haciendo un cat a cualquiera de los archivos alojados dentro de alguna de estas carpetas cron.*, podremos comprobar que efectivamente se trata de guiones de shell:

eugenia@cococha-gnucita:/etc/cron.daily$ cat passwd #!/bin/sh cd /var/backups || exit 0 for FILE in passwd group shadow gshadow; do test -f /etc/$FILE || continue cmp -s $FILE.bak /etc/$FILE && continue cp -p /etc/$FILE $FILE.bak && chmod 600 $FILE.bak done eugenia@cococha-gnucita:/etc/cron.daily$

Cualquier guin de shell es vlido para ser agregado como archivo cron.*

E X C E P C I O N E SC R O N . D
La nica excepcin a todo lo anterior, son los archivos cuyo destino ser el directorio /etc/cron.d. Los archivos alojados en este directorio, tendrn un formato diferente y adems, solo se deben utilizar cuando el perodo de ejecucin difiera de cualquiera de los anteriores. Un claro ejemplo de uso correcto de cron.d, es el archivo php5 encargado de eliminar las sesiones inactivas. A que no te lo esperabas? Sin buscarlo, de pronto encuentras la respuesta a cmo hace PHP para eliminar las sesiones inactivas tras un perodo de tiempo determinado? . Y la respuesta

2013 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA

Th e Or i g i n a l Ha c k e rwww. o r i g i n a l h a c k e r . o r g

20

justamente, es que PHP agrega un archivo php5 a /etc/cron.d indicando como perodo de ejecucin (formato crontab) el indicado en la directiva session.gc_maxlifetime del archivo php.ini y procediendo a ejecutar la instruccin encargada de destruir toda sesin cuyo perodo de inactividad, supere el mencionado.

eugenia@cococha-gnucita:/etc/cron.d$ cat php5 # /etc/cron.d/php5: crontab fragment for php5 # This purges session files older than X, where X is defined in seconds # as the largest value of session.gc_maxlifetime from all your php.ini # files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime # Look for and purge old sessions every 30 minutes 09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$ (/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

Los archivos cron.d deben tener el formato requerido por crontab para poder ser ejecutados por el sistema de forma satisfactoria

E S P E C I F I C A C I O N E SD E B I A N
Como especificaciones puntuales para los paquetes Debian ( .deb), se deben tener en cuenta sus normas. Los archivos cuyo destino sean las carpetas /etc/cron.* seguirn estas pautas: El formato del archivo debe ser un guin de shell para todos los casos excepto para cron.d en el que debe tener el formato sugerido por crontab; Los archivos deben tener permisos de ejecucin (se debe hacer un chmod +x a cada archivo .cron.*); Los archivos deben guardarse en la carpeta DEBIAN del paquete; El nombre de archivo debe tener el formato: nombre_del_paquete.cron.* dnde: nombre_del_paquete ser el de la aplicacin. Por ejemplo, apache2 * ser hourly, daily, weekly, monthly o d segn corresponda. Por ejemplo, un archivo DEBIAN/apache2.cron.daily se alojar en /etc/cron.daily/apache2 y ser ejecutado diariamente.

Vous aimerez peut-être aussi