Está en la página 1de 1

HOME

Uso de DTRACE EN UNA LNEA


cookies MIS LIBROS SOBRE M
Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si contina navegando est dando su consentimiento para la aceptacin de las
mencionadas cookies y la aceptacin de nuestra poltica de cookies, pinche el enlace para mayor informacin.
plugin cookies
CERRAR

JJMORA.ES
"I THINK THE MAJOR GOOD IDEA IN UNIX WAS ITS CLEAN AND SIMPLE INTERFACE: OPEN, CLOSE, READ, AND
WRITE." KEN THOMPSON

Sabas quela variable Follow @jjmoraunix

LD_PRELOAD ?
admin April 15, 2008 5 Comments

Nos permite construir libreras para la interposicin de nuestras propias funciones en el


sistema. La interposicin de libreras es un mtodo empleado, para que de forma
totalmente transparente para el software compilado, podamos modificar parte de su
comportamiento. La interposicin se basa en que las funciones de la librera que
estamos utilizando para la interposicin sern utilizadas por el linkador para llamar a
las funciones originales. Cuando realizamos una interposicin, tenemos la opciones de
llamar a la funcin original, cuando lo creamos conveniente.Vamos a realizar un
sencillo ejemplo, en el que construiremos una librera a la que llamaremos my_libc.so.1,
la cual tendr la funcin chmod(), en el siguiete ejemplo podemos ver el contenido de
programa my_chmod.c
DevOps y el camino de baldosas
#include < sys/types.h > amarillas
#include < sys/stat.h >
#include < dlfcn.h >

int chmod(const char *path, mode_t mode)


{
int (*chmod_orig)(const char *path, mode_t mode);
int val;
chmod_orig=dlsym(RTLD_NEXT,"chmod");
printf("n my_chmod: ATENCION!!! Se ha modificado los permisos del fichero %sn",pa
th);
val=chmod_orig(path,mode);
}

Como se puede ver, el ejemplo es extremadamente sencillo, se utiliza la llamada dlsym()


para que en tiempo de ejecucin, el linkador nos devuelva un puntero a la funcin
chmod() original, seguidamente imprimimos un mensaje por pantalla y por ltimo
Capacity Planning IT
utilizamos el puntero chmod_orig (para los nefitos de C, este lenguaje permite punteros Una aproximacin prctica.
a funciones) el cual apunta a la verdadera funcin chmod() que cambiar los permisos
del fichero.NOTA Sera interesante leer el man de la funcin dlsym, para comprobar
las posibilidades de las funciones para trabajar con el linkado dinmico.Ahora vamos
crear un programa en C, el cual realizar una llamada a la funcin chmod(), para
Search
cambiar los permisos de un fichero.

#include < stdio.h >


#include < sys/types.h >
#include < sys/stat.h >
void main(){
chmod("/tmp/ejemplo1.txt",S_IRWXG|S_IRWXO|S_IRWXU);
printf("n ejemplo: Cambiados los permisos del fichero /tmp/ejemplo1.txt a 777 nn"
); BLOGROLL
}

Alvaro Lopez Ortega


Como podemos ver, el ejemplo.c, cambia los permisos del fichero /tmp/ejemplo1.txt
para ponerlos a 777.Vamos ver cuales son los pasos para compilar nuestro dos devops.com

programas. Primero debemos crear una librera con nuestra versin de la funcin elgeekerrante.com

chmod(). Creamos el fichero objeto my_chmod.o.


High Scalability

HuelvaYork
bash3.00# gcc fPIC g c Wall my_chmod.c
bash3.00# ls lrt Iban Nieto
total 12
rwrr 1 root root 323 Apr 15 16:04 my_chmod.c SKaRCHa
rwrr 1 root root 228 Apr 15 16:05 ejemplo.c
rwrr 1 root root 3220 Apr 15 16:06 my_chmod.o the agile admin

Victor M. Fernandez Gomez


Creamos la librera con nuestro nuevo fichero objeto.

bash3.00# gcc shared Wl o my_libc.so.1 my_chmod.o


bash3.00# ls lrt
total 28
LINKS
rwrr 1 root root 323 Apr 15 16:04 my_chmod.c
rwrr 1 root root 228 Apr 15 16:05 ejemplo.c Guadalinex
rwrr 1 root root 3220 Apr 15 16:06 my_chmod.o
rwxrxrx 1 root root 7296 Apr 15 16:07 my_libc.so.1 www.adminschoice.com

www.barrapunto.com
Por ltimo compilamos nuestro sencillo programa de ejemplo ejemplo.c.

bash3.00# gcc ejemplo.c o ejemplo

CATEGORIES
En este momento tenemos, por un lado, nuesta librera my_libc.so.1 y por otro, el
programa ejemplo, que se encarga de modificar los permisos del fichero
Almacenamiento

Blockchain
bash3.00# ls l /tmp/ejemplo1.txt
rwrr 1 root root 0 Apr 15 17:13 /tmp/ejemplo1.txt
Capacity planning
bash3.00#
bash3.00# ./ejemplo Cloud Computing

ejemplo: Cambiados los permisos del fichero /tmp/ejemplo1.txt a 777 DevOps

bash3.00# ls l /tmp/ejemplo1.txt Dispositivos


rwxrwxrwx 1 root root 0 Apr 15 17:13 /tmp/ejemplo1.txt
dtrace
bash3.00#
Eventos
Ahora utilizamos la variable de entorno LD_PRELOAD, para que cargue nuestra librera
Humor
my_libc.so.1.
IPC

bash3.00# Kernel
bash3.00# LD_PRELOAD=/export/home/user1/my_libc.so.1
bash3.00# LDoms
bash3.00# ./ejemplo
Libros

my_chmod: ATENCION!!! Se ha modificado los permisos del fichero /tmp/ejemplo1.txt Linux

ejemplo: Cambiados los permisos del fichero /tmp/ejemplo1.txt a 777 Management


bash3.00#
mdb

Ahora cada vez que se llame a la funcin chmod(), aparecer el siguiente Network

mensaje.my_chmod: ATENCION!!! Se ha modificado los permisos del fichero < file>De


Noticia
echo podemos ejecutar el comando del sistema chmod para cambiar los permisos del un
OpenSolaris
fichero.
Opinin

bash3.00# ls > /tmp/ejemplo2.txt PHPEasyTools


bash3.00# ls l /tmp/ejemplo2.txt
rwrr 1 root root 68 Apr 15 17:18 /tmp/ejemplo2.txt Procesadores
bash3.00#
Sabas que
bash3.00# chmod 755 /tmp/ejemplo2.txt

SmartOS
my_chmod: ATENCION!!! Se ha modificado los permisos del fichero /tmp/ejemplo2.txt
Software Libre
bash3.00#
Solaris

Como podemos ver, ahora el comando chmod tambien devuelve la cadena con el aviso. SPARC
Todos los programas o comandos que ejecutemos, cada vez que se llame a la funcin
Tuning
chmod(), devolveran un mensaje de aviso, debemos cambiar el contenido de la variable
Uncategorized
de entornos LD_PRELOAD para que se deje de utilizar la interposicin de nuestra
Virtualizacion
libreria.
zfs
bash3.00#
bash3.00# LD_PRELOAD=
bash3.00# chmod 755 /tmp/ejemplo2.txt
bash3.00#

Ya no aparecer el mensaje de aviso. Para qu podemos utilizar la interposicin de


w w w .flickr.com
libreras a nivel de administracin de sistemas ?, pues desde la elaboracin de
estadsticas, auditora, control de los recursos, las posibilidades son ilimitadas, creo que
el nic lmite est en nuestra imaginacin, de todas formas, aunque no le veamos
demasiada utilidad ahora, creo que es una herramienta lo suficientemente potente como
para que la tengamos en cuenta y sobre todo que no veamos la interposicin de
libreras como una herramienta nicamente de desarrollo.

Sabas que, Solaris Bookmark

PREVIOUS ARTICLE NEXT ARTICLE


OpenSolaris: Viernes Tcnicos OpenSolaris: Charla de la Comunidad
Almacenamiento en la UPM

5 RESPONSES

ESKORT
April 10, 2015 / 11:12 am

225083 629637I was reading some of your content on this web site and I conceive this internet
website is truly informative ! Keep on putting up. 515760

HTTP://WWW.YOUTUBE.COM
April 13, 2015 / 10:50 pm

35359 170106This really is a really exciting write-up, I

KALPA PHARMACEUTICALS STEROIDS REVIEWS


April 18, 2015 / 5:21 am

256933 72148This is how to get your foot in the door. 911335

FULLY LOADED KODI


April 20, 2015 / 10:35 pm

Thanks so much for giving me an update on this matter on your web-site. Please be aware that if
a brand new post appears or if perhaps any modifications occur about the current article, I would
be thinking about reading more and understanding how to make good using of those strategies
you talk about. Thanks for your efforts and consideration of other men and women by making
this site available.

CLICK HERE
May 2, 2015 / 1:13 am

Hello, I think your site might be having browser compatibility issues. When I look at your blog in
Chrome, it looks fine but when opening in Internet Explorer, it has some overlapping. I just
wanted to give you a quick heads up! Other then that, superb blog!

Comments are closed.

2016 JJMora.es. All rights reserved. Flato by ThemeMeme

También podría gustarte