archivo

bash

Después de estar suspendida mi portátil acelera los ventiladores causando bastante ruido.

Luego de un tiempo ha empezado a interferir con el correcto funcionamiento de la tarjeta de red inalámbrica y el teclado.

Me encontré con una solución temporal para después de cada suspensión en los foros de arch linux:

for i in {1..15}; do echo 0 > /sys/class/thermal/cooling_device$i/cur_state; done

El amigo de un amigo actualizó su versión de bash para superar la vulnerabilidad conocida como shellshock en openSUSE 12.3:

zypper update bash

Luego de la actualización empezó a obtener mensajes de error:

Target initialization failed:
rpmdb2solv -r ‘/’ -p ‘/etc/products.d’  > ‘/var/cache/zypp/solv/@System/solvBx3cgH’
/bin/sh: /lib/libc.so.6: version `GLIBC_2.15′ not found (required by /bin/sh)

Puedo intuir que la versión de bash no encontraba compatibilidad con la versión de Libc instalada. No suena lógico que teniendo una dependencia esta no se actualice durante el zypper up. Pero bueno, yendo al grano.

Estaba en una situación en la que no podía actualizar el resto de paquetes porque estos usaban bash y bash no estaba ejecutandose correctamente por la incompabilidad. zypper, yast, export, setenv no podían ser ejecutados.

La solución fue descargar glibc-2.15-22.9.1.i686.rpm e instalarlo usando –replacefiles para que omitiera conflictos y reemplazara los paquetes por los nuevos:

rpm -ivh –replacefiles glibc-2.15-22.9.1.i686.rpm

Suelo hacer favores de informática a familiares y amigos en la medida de lo posible y lo interesante que puedan aparentar ser los problemas. Nada de  instalar antivirus o Windows, siempre me hago “el loco”. Me pidieron subir un sitio a un FTP, me entregaron las credenciales y fuentes del sitio, el problema es que había sido “programado” (diseñado) con photoshop y dreamweaver y las referencias a las img hacían referencia a un directorio con nombre “Imágenes” que al ser codificado dentro de peticiones HTTP se cambiaban por “Im%E1genes” y terminaban por hipervínculos rotos.

Eran muchas las referencias por modificar como para cambiarlas a mano así que usé:

  • grep para buscar ocurrencias de la palabra.
  • sed para modificar dichas ocurrencias.
  • find para recorrer los archivos html.
  • mv para cambiar el nombre a los directorios.
  • perl en un pequeño one-liner para hacer match con caracteres no ascii.

Acá están los comandos usados: Read More

El valor ignorespace o ignoreboth (el cual equivale a ignorespace + ignoredups) en la variable de entorno HISTCONTROL es incluido por defecto en la mayoría de distribuciones hoy en día y normalmente se le presta muy poca atención al riesgo de tenerla configurada de esta manera.

La variable se usa para tener un historial de comandos menos repetitivo, en el caso de ignoredups (ignore duplicates) no se agregan al historial comandos repetidos que son ejecutados de manera consecutiva. ignorespace por su parte no añade al bash_history comandos que empiecen por uno o más espacios en blanco.

El historial además de referencia puede ser usado con fines de auditoría y cualquier usuario podría pasar por encima de este control con solo agregar un espacio en blanco antes de comandos que no quiera que otros usuarios vean que ejecutó. Por ello me parece un tema delicado en equipos en los que se comparten las credenciales de acceso como las del usuario root.

Por ahora en los VPS o equipos de uso compartido recomiendo modificar el valor por defecto para que únicamente ignore duplicados:

echo “HISTCONTROL=ignoredups” >> /etc/enviroment

Al parecer alguien mas ya se había cuestionado lo mismo en las lista de correo de bash:
http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00024.html

Acá el feature request en openSUSE: https://features.opensuse.org/316634