Metadatos de ficheros con ‘find’

find es una orden presente en GNU/Linux que podemos utilizar para obtener mucha información. Es útil, por ejemplo, para saber qué ficheros se han modificado en un periodo de tiempo, por ejemplo, en las últimas 24 horas:

find . -type f -mtime 0

o los ficheros que tienen permisos de escritura tanto para el propietario como para su grupo:

find . -perm -220

También nos puede ofrecer información sobre la fecha o tiempo de acceso, modificación, de creación, tamaño que ocupa el fichero en bloques de 1K, número de inodos, número de enlaces duros,…, de los ficheros que cumplan ciertos criterios de búsqueda:

find . -mtime 0 -perm -111 -type f \
   -printf "%Ax;%AT;%Tx;%TT;%Cx;%CT;%m;%U;%G;%s;%k;%i;%p\n"

Esta orden nos mostrará la fecha y el tiempo de acceso, fecha y tiempo de modificación, fecha y tiempo de creación, permisos, identificador de usuario y grupo, tamaño del fichero, número de bloques de 1K, número de inodos y nombre del fichero (con -type f nos aseguramos que sean ficheros) que ha sido modificado en las últimas 24horas (-mtime 0) y que tiene permisos de ejecución habilitados para propietario, grupo y cualquier otro usuario (-perm -111).

¡Espero que os sea útil!

Referencias

  1. man find

Añadir una “mosca” a un vídeo con ffmpeg

Con ffmpeg es muy sencillo ponerle una marca de agua (o 2) a un vídeo. Lo podemos hacer con una imagen transparente que contenga la marca que queramos añadir usando el filtro overlay de ffmpeg de la siguiente manera:

ffmpeg -i "VÍDEO" -strict -2 -vf "movie=IMAGEN_CON_MARCA [watermark]; \
[in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out]" \
-r 25 -b:a 128k -b:v 1200k "VÍDEO_CON_MARCA"

Solo debemos fijarnos en un detalle más: los argumentos referentes a los frames por segundo y el ratio de bits por segundo de audio y vídeo (opciones -r, -b:a y b:v, respectivamente). Poned los que os interese teniendo en cuenta el consumo de recursos.

Así podemos automatizar fácilmente este proceso y “marcar” un montón de vídeos:

for video in /videos_a_marcar
do
   nombre="`basename $video | cut -d'.' -f1`"
   tipo="`basename $video | cut -d'.' -f2`"
   ffmpeg -i $video -strict -2 -vf "movie=IMAGEN_CON_MARCA [watermark]; \
[in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out]" \
-r 25 -b:a 128k -b:v 1200k "$nombre-CON-MARCA-$tipo"
done
¡Espero que os sea útil!

Referencias

  1. http://ffmpeg.org/ffmpeg-filters.html#overlay-1

PS: En la ayuda de ffmpeg se explica todos los argumentos, sobre todo en la referencia 1

PS: En el script falta comprobar posibles errores (que podemos leer y escribir, por ejemplo)

 


Google authenticator como 2FA en Debian

El año pasado probé Google Authenticator como 2FA en una CentOS. Hoy he usado la información de esa entrada para configurar, ¡por fin!, un 2FA para el acceso por SSH a mi almacenamiento personal.

Como la distro es Debian, hay un pequeño cambio: el paquete que debemos tener instalado:

apt-get install libpam0g-dev

Debemos tener instalado tanto gcc como make para poder compilar la librería de google.

Un detalle más es que, al contrario de lo que comenté en mi anterior entrada, para configurar mi Android he preferido usar la secret key que obtenemos al ejecutar Google Authenticator para el usuario que queremos proteger.

¡Espero que os sea útil!


Error ‘not found’ en la carga de un fichero con init-file de MySQL

De vez en cuando recurro a este mecanismo de MySQL para cambiar la contraseña del administrador.

En las distribuciones que tengan activo apparmor es muy probable que no funcione (dependerá, como vamos a ver, de la configuración apparmor) dando el error (que encontraremos en /var/log/mysql/error.log):

[ERROR] /usr/sbin/mysqld: File '/path_al_fichero/nuevopasswd.sql' not found (Errcode: 13)

(obviamente, estoy suponiendo que el fichero existe y tenemos permisos de lectura 😉 )

El error, como ya podéis imaginar, está provocado por apparmor y, para conseguir nuestro objetivo (ejecutar el fichero para cambiar la contraseña) debemos habilitar la ejecución del guión. Para ello:

  • En el fichero /etc/apparmor.d/usr.sbin.mysqld añadimos la orden ‘/path_al_fichero/*.sql r, ‘ dentro de las opciones de MySQLCaptura de pantalla de 2015-07-03 16:44:08
  • Reiniciamos apparmor: /etc/init.d/apparmor reload
  • Reiniciamos MySQL: /etc/init.d/mysql restart

¡Espero que os sea útil!

PD: La imagen no representa el fichero /etc/apparmor.d/usr.sbin.mysqld completo; donde están los ‘……’  hay otras opciones necesarias para que convivan apparmor y MySQL.


Transparencias de clase sobre “Gestión de usuarios y LDAP”

Continúo con la publicación de viejas transparencias de clase; en este caso, la primera que publico de las clases de Administración de Sistemas Operativos en Red que impartí entre 1999 y 2012 y del que todavía hoy (literal) he tenido que preparar y realizar un examen.

Con esta presentación estudiábamos en clase los módulos PAM, cómo llegar a ser root y compartir privilegios (su y sudo) y cómo usar un directorio para centralizar la autenticación y autorización de los usuarios de un sistema con GNU/Linux.

La clase duraba 1 hora y media y no teníamos tiempo para más. Si no, podríamos haber incluido profundizado con otros temas, como por ejemplo: 2FA.

¡Espero que os sea útil!


Transparencias de clase sobre “Firewalls”

Continuando con las publicaciones de viejas transparencias de clase de Administración e Instalación de Redes de Computadores, en particular, de las que dedicaba a seguridad en red, hoy toca el turno de la presentación que hice sobre el diseño y configuración de cortafuegos. Para estas transparencias usé como principal fuente de información el libro “Building Internet Firewalls” de D. Bremt Chapman y Elizabeth D. Zwicky, editado por O’Reilly.

¡Espero que os sea útil!


Transparencias de clase sobre “Hacking con buscadores”

Continúo con la “saga” de publicaciones de viejas transparencias de clase de Administración e Instalación de Redes de Computadores. Hoy toca el turno de la clase que dedicaba a Hacking con buscadores y que cuya principal fuente de información es el libro “Hacking con buscadores: Google, Bing & Shodan” de Enrique Rando publicado por Informática64 (ahora, 0xword)

¡Espero que os sea útil!


Thepiratebay.se, bloqueo y técnicas para evadirlo

Creo que casi todos conocemos ya que un juez ha ordenado bloquear el acceso a The piratebay desde España. Esta orden afecta a los proveedores de servicio españoles que suelen cumplirlo mediante:

  • Las resoluciones DNS
  • Inspección de paquetes

(El que no usen un filtro contra la IP es porque esa IP puede estar asignada para más de un sitio web y estos no deberían “pagar” por el hecho denunciado si no son los responsables)

Si se aplica el bloqueo en el DNS, con indicarle a nuestros sistemas que usen otros que no se hayan visto afectados por la orden sobra para que podamos seguir accediendo a dicho sitio. Por ejemplo, podemos usar openDNS o los de Google (8.8.8.8).

Si se realiza inspección de paquetes, con conectarnos mediante HTTPS sobra para acceder al sitio. En la inspección de paquetes lo que se busca es información relevante para realizar la tarea encomendada (normalmente, se busca en el nivel de aplicación). Para este caso, lo normal es que se busque la cabecera host del protocolo HTTP ya que se encarga de identificar el sitio al que nos queremos conectar. Si usamos HTTPS esta información va cifrada y “no la encontrará el analizador”.

Si se usaran combinadas las 2 técnicas, tendríamos que combinar las 2 “soluciones”. No es necesario ni VPNs ni TOR como se menciona en este artículo sobre cómo saltarse el bloqueo, aunque, evidentemente, son buenas opciones que, además, nos dan otras ventajas añadidas a simplemente conectarnos a ThepirateBay.se

¡Espero que os sea útil!

PD: No soy usuario de este sitio, pero he probado desde mi PC, con Vodafone como ISP, y  funciona perfectamente  la conexión con HTTPS y no con HTTP.

PD2: Conseguir el efecto que pretende la orden del juez es muy complicado tal y como funciona y se organiza Internet

 

 


Guión para cambiar un carácter (o varios) en el nombre de ficheros

Como podéis comprobar todos aquellos que tengáis instalado ownCloud, existe una serie de caracteres que os provocan el error : “Files contains invalid characters…” cuando sincronizáis con el cliente de escritorio.

Si optáis por la solución cómoda como es cambiar el nombre, quitando el carácter problemático por otro (‘_’ es una buena opción), en GNU/Linux, con esta orden ejecutada desde el directorio que sincronizáis, sobra:

find . -type f -name ‘*:*’ | while read fich; do echo “Moving $fich a ${fich//[:]/_}”; mv “$fich” “${fich//[:]/_}”; done

Con ella cambio el carácter ‘:’ por ‘_’. Si queréis generalizar la orden para más caracteres, solo tenéis que modificar la expresión “${fich//[:]/_}” en los 2 sitios donde aparece y también el patrón ‘*:*’.

¡Espero que os sea útil!

PD: la orden echo “Moving $fich a ${fich//[:]/_}” es solo informativa; puede no estar.

Actualización:

PD2: Lo que aparece en negrita es una actualización. Se me olvidó indicar el patrón que busca ficheros cuyo nombre contiene el carácter deseado.


Reutilización del mismo puerto en el lado del cliente

La entrada anterior está escrita desde el punto de vista de los servidores, aunque en el lado del cliente, también podemos reutilizar puertos. ¿Cómo? Pues añadiendo, antes de la función connect de, por ejemplo, este código de cliente, las siguientes órdenes:

sock.setsockopt(socket.SOL_SOCKET, SO_REUSEPORT, 1)
sock.bind((“0.0.0.0”,3000))

la primera orden es la misma que hemos comentado ya y es la que nos activa el flag que permite reutilizar el puerto; la segunda es necesaria para “forzar” el puerto y que no sea uno aleatorio. Si lanzamos 2 conexiones, nos queda:

Screenshot from 2015-03-23 10:59:20

¡Espero que os sea útil!


Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más información.