A partir de la versión 6.0 de OpenBSD, W^X está habilitado por defecto. Se trata de una protección de memoria a nivel sistema operativo donde cada página del espacio de memoria de un proceso o el propio kernel tiene permiso de escritura o ejecución, pero no ambos. Sin embargo para que funcionen ciertas aplicaciones, puntualmente Python, es necesario deshabilitar esta protección.

Al tratar de ejecutar el binario python, la consola retorna "Permission denied". Siendo que el usuario actual tiene permisos de ejecución sobre el mismo.

# python
-bash: /usr/bin/python: Permission denied
# 

Es más, el binario tiene permiso de ejecución para todo el mundo:

# ll /usr/bin/python 
lrwxr-xr-x  1 root  wheel    24B Sep  1 10:20 /usr/bin/python -> /usr/local/bin/python2.7
# ll /usr/local/bin/python2.7
-rwxr-xr-x  1 root  bin   5.3K Jul 25  2016 /usr/local/bin/python2.7

Pero al examinar el log de mensajes del kernel, se encuentra el siguiente error:

Oct 20 08:09:12 obsd /bsd: /usr/bin/python(73276): W^X binary outside wxallowed mountpoint

Esto significa que el proceso necesita páginas en su espacio de memoria con permisos de escritura y ejecución. Para solucionarlo, se debe montar el sistema de archivos que contiene al ejecutable con la opción "wxallowed".

# cat /etc/fstab
c491860c712f59cb.b none swap sw
c491860c712f59cb.a / ffs rw 1 1

Esta opción típicamente se aplica sobre el sistema de archivos /usr/local. Sin embargo, en sistemas pequeños (con un único FS) debe aplicarse sobre el sistema de archivos raíz. Editar la configuración de montaje se filesystems:

# nano /etc/fstab

Agregar la opción "wxallowed" para el sistema de archivos en cuestión:

c491860c712f59cb.b none swap sw
c491860c712f59cb.a / ffs rw,wxallowed 1 1

Reiniciar el sistema.


Tal vez pueda interesarte


Compartí este artículo