Guardar un fichero con vi o vim sin tener permisos de escritura

Sheeps

No sé a estas alturas cuantas veces me ha podido pasar pero diría que más de cientos sin temor a equivocarme. Abro un fichero para editar, digamos por ejemplo /etc/group y, cuando voy a grabar, me doy cuenta que estaba con mi usuario no privilegiado y no había abierto el editor con sudo y, por lo tanto, no me deja grabar por error de escritura.
Continuar leyendo «Guardar un fichero con vi o vim sin tener permisos de escritura»

LXC, LXD y ZFS

Lincoln Type L

Introducción

Un contenedor es una opción de virtualización que permite ejecutar un conjunto de procesos de forma que se encuentren completamente aislados del resto de procesos que puedan estar ejecutándose en un sistema.

Esto implica que, aunque los procesos del contenedor estén utilizando el sistema operativo del anfitrión, están utilizando un root file system virtual propio del contenedor; con sus propias versiones de librerías, datos y dispositivos, independientes a los existentes en el sistema anfitrión u otros contenedores del sistema.
Continuar leyendo «LXC, LXD y ZFS»

Creando entornos de desarrollo python con virtualenv

Red Corvette

Cualquier desarrollo en Python requerirá con seguridad del uso de un conjunto de módulos y, dado que, generalmente no tendremos control sobre cómo ni cuándo evolucionará cada uno de estos módulos, nuestro desarrollo quedará restringido para operar sólo con versiones específicas de los módulos de los cuales dependa. Si seguimos las normas especificadas para el empaquetado, estas dependencias estarán claramente determinadas en los paquetes generados. Y, si hemos respetado las versiones por defecto existentes en nuestro entorno de producción, estas dependencias no deberían suponer mayores inconvenientes a la hora de instalar o actualizar nuestros desarrollos.
Continuar leyendo «Creando entornos de desarrollo python con virtualenv»

Subiendo directorios vacíos en Git

Blue Corvette interior

Una de las características de Git es que, por defecto, los directorios vacíos no forman parte del repositorio y, por lo tanto, son silenciosamente descartados por operaciones como commit o push.

Incluso en los casos en que un directorio que previamente formaba parte de un repositorio pierda todo su contenido, este directorio directorio es silenciosamente eliminado del repositorio y no será creado en futuras operaciones de clonación.
Continuar leyendo «Subiendo directorios vacíos en Git»

Ubicar ficheros abiertos por un proceso

Indian bike

Configurando un sistema comencé a recibir errores como el siguiente:

syslog-ng[1091]: Error suspend timeout has elapsed, attempting to write again; fd='11'

El problema era que el proceso de syslog no era capaz de escribir sobre el fichero que había abierto con el file descriptor 11 pero no tenía referencias acerca de cuál era ese fichero como para comprobar por qué se producía el error.
Continuar leyendo «Ubicar ficheros abiertos por un proceso»

Captura de paquetes WiFi en Linux

Martillo hidráulico

Como explican el wiki de Wireshark, en el modo normal de funcionamiento, la captura de tráfico a través de interfaces WiFi se encuentra filtrada por el hardware que implementa el protocolo IEEE 802.11, quedando restringida al SSID en el que nos encontremos asociados y, dentro de ese SSID, a los paquetes dirigidos hacia la dirección MAC de nuestro interfaz, más los paquetes dirigidos a los grupos multicast a los que nuestro equipo se haya asociado y a los paquetes de tipo broadcast.
En el caso que necesitemos analizar el tráfico completo(packet sniffing) de un canal WiFi deberemos reconfigurar el interfaz en modo monitor como se muestra a continuación.
Continuar leyendo «Captura de paquetes WiFi en Linux»