tagger tag picard para musicbrainz mac kid3 for easytag linux bash aslr virtual-address-space sysctl

linux - tag - Deshabilitar y volver a habilitar la distribución aleatoria del espacio de direcciones solo para mí



musicbrainz picard debian (2)

Me gustaría deshabilitar la distribución aleatoria del espacio de direcciones (ASLR) en mi sistema (Ubuntu Gnu / Linux 2.6.32-41-server), pero si uso

sysctl -w kernel.randomize_va_space=0

El cambio afectaría a todos los usuarios en el sistema, supongo. (¿Es esto cierto?) ¿Cómo puedo limitar los efectos de deshabilitar ASLR solo como usuario o solo a la sesión de shell en la que invoco el comando para deshabilitarlo?

Por cierto, veo que la configuración actual (predeterminada) de mi sistema es

sysctl -w kernel.randomize_va_space=0

¿Por qué 2 y no 1 o 3? ¿Dónde puedo encontrar documentación sobre los valores numéricos de las configuraciones / proc / sys, sus rangos y sus significados? ¡Gracias!


La documentación para la configuración de randomize_va_space sysctl está en Documentation/sysctl/kernel.txt en el árbol de fuentes del kernel. Básicamente,

0 - Desactiva la aleatorización del espacio de direcciones del proceso.

1 - Haga que las direcciones de mmap base, stack y página VDSO sean aleatorias.

2 - Además habilitar la aleatorización del montón.


La mejor manera de deshabilitar localmente el ASLR en un sistema basado en Linux es usar indicadores de personalidad de los procesos. El comando para manipular banderas de personalidad es setarch con

-R , --addr-no-randomize

Desactiva la aleatorización del espacio de direcciones virtuales (activa ADDR_NO_RANDOMIZE).

Aquí es cómo proceder:

$> setarch $(uname -m) -R /bin/bash

Este comando ejecuta un shell en el que se ha deshabilitado el ASLR. Todos los descendientes de este proceso heredarán las banderas de personalidad del padre y, por lo tanto, tendrán un ASLR deshabilitado. La única manera de romper la herencia de las banderas sería llamar a un programa setuid (sería una violación de seguridad para admitir dicha característica).

Tenga en cuenta que uname -m está aquí para no codificar la arquitectura de su plataforma y hacer que este comando sea portátil.