Cómo activar Flatpak en Ubuntu 24.10

Flatpak es un sistema de distribución de aplicaciones para GNU/Linux alternativo a los paquetes que se instalan mediante una distribución. Aunque el gestor de paquetes sigue siendo la mejor forma de obtener paquetes para GNU/Linux, a veces para programas que tienen un ciclo de actualización diferente al del sistema operativo, sobre todo en sistemas que no son rolling release, es más conveniente para obtener las versiones más recientes de programas de escritorio.

Continuar leyendo «Cómo activar Flatpak en Ubuntu 24.10«

Cómo descargar Firefox manualmente en GNU/Linux

Mozilla ha anunciado recientemente que las distribuciones binarias de Firefox para GNU/Linux se proporcionarán en formato .tar.xz a partir de ahora. Si te estás preguntando de qué forma puede afectar esto al paquete que bajas con tu gestor de paquetes, Snap o Flatpak, la respuesta es: nada. Esta noticia está pensada para la gente que descargue Mozilla Firefox en GNU/Linux como un tarball binario.

Es una de las características menos conocidas de Mozilla Firefox, y a la vez es una que lleva ahí desde siempre. Heck, las primeras veces que usé GNU/Linux hace ya más de 15 años, lo instalé así, porque todavía no había aprendido a usar apt-get en Ubuntu, y esto era lo que obtuve cuando busqué en Google «descargar firefox ubuntu».

Si te metes directamente en el sitio web de Firefox desde GNU/Linux y le das al botón «Descargar», verás un botón que dice «Descargar para Linux 64-bit» (además de otro para 32-bit, pero según cuántos años tenga tu ordenador tal vez ese no te haga falta.) Púlsalo y descargarás Mozilla Firefox como un tarball. La versión 133 es un archivo que termina por .tar.bz2, pero después del anuncio, es de esperar que futuras versiones se descarguen en formato .tar.xz.

Página de descarga de Mozilla Firefox.
Este enlace siempre ha estado ahí.

También, si necesitas una versión diferente, puedes descargarla a mano desde las siguientes ubicaciones:

Extráelo en una carpeta (yo soy fan de crear un directorio llamado ~/opt en mi carpeta personal, que recree el funcionamiento de la carpeta /opt pero sin requerir permisos de superusuario), y ya tienes Firefox en tu sistema.

Para ejecutarlo, puedes utilizar el programa firefox que hay dentro del directorio, que puedes abrir haciendo doble clic desde el explorador de archivos, aunque tal vez te interese montar un enlace simbólico en /usr/local/bin para poder abrirlo más cómodamente.

Pantalla de inicio de Firefox.
Recuerda extraer Firefox en una ubicación estable si vas a establecerlo como naveagdor por defecto para que tu sistema no tenga problemas en encontrarlo.

Ten en cuenta que este Firefox es completamente funcional y que si lo has extraído en una ubicación donde tengas permisos de escritura, se actualizará automáticamente igual que el Firefox que puedas instalar de otro modo.

Si quieres crear un lanzador mediante MenuLibre o mediante cualquier otra aplicación que te deje manipular archivos .desktop, puedes hacer que apunte a firefox como programa a ejecutar. Tienes un icono para usar en tu lanzador en el directorio browser/chrome/icons/default/default128.png allá donde hayas extraído Firefox.

Cómo empezar a usar Mastodon: una guía para entrar en el fediverso

Mastodon es una red social de microblog. El microblog es un género de red social donde lo que publicas son pequeñas entradillas de texto a las que puedes adjuntar imágenes, vídeos, enlaces… Como la red social anteriormente conocida como Twitter, o Bluesky o Threads.

La ventaja de usar Mastodon para algunas personas estará en el hecho de que es una red social verdaderamente abierta y libre de algoritmos, seguimiento y millonarios tratando de que te quedes la mayor parte del tiempo haciendo scroll en su aplicación. Threads es propiedad de Meta; y Bluesky, por mucho que le esté lavando la imagen la prensa últimamente, no deja de ser una red social ahora mismo financiada por varios fondos de inversión relacionados con la blockchain.

Sin embargo, a menudo la dificultad para usar Mastodon está en las primeras etapas, y eso es precisamente en lo que te quiero intentar ayudar en este post. Hay personas que tratan de hacer introducciones a Mastodon intentando aportar la mayor cantidad de información posible desde el primer momento. Es verdad que Mastodon tiene mucho folklore detrás, pero soy de la opinión de que intentar aportar toda esa información de golpe provoca un exceso que agota y que quita el interés, por eso prefiero que haya cosas que descubras poco a poco.

Por eso, y también como submensaje para las personas que precisamente sepan cómo funciona Mastodon, en este post no me voy a meter mucho a explicar qué es el fediverso, por qué Mastodon no es lo mismo que fediverso, o qué otras redes sociales hay. Ya habrá tiempo de sacar esos temas en el futuro. Mastodon es una de las formas más sencillas de entrar en el fediverso, y que te interese puede ser el primer paso para que descubras todo lo que esconde este ecosistema.

Antes de crearte una cuenta, mira qué te vas a encontrar

He aquí un truco para explorar qué hay realmente en Mastodon antes de tener ni tan siquiera una cuenta. En una ventana de navegador, visita la página de explorador de una instancia (ahora te explico lo que es). Algunas instancias grandes y generalistas en español son https://paquita.masto.host, https://masto.es y https://tkz.one. En este último caso, haz clic en el enlace Explorar que sale a la izquierda. Deberías ver un feed parecido al de la siguiente captura de pantalla, aunque los posts seguramente sean distintos porque se actualizan cada pocas horas.

Un pantallazo de la página Explorar de tkz.one.
Aquí un pantallazo de tkz.one y de alguno de los posts destacados cuando escribí esta entrada.

Lo que estás viendo aquí es la sección Explorar. En Mastodon no hay un feed «Para ti», ni hay una lupa como en Instagram donde puedas ver posts recomendados para ti. Pero, a cambio, todo el tiempo la sección Explorar te mostrará los posts más populares de la red a esa hora del día.

Si haces scroll, encontrarás reflexiones, memes, noticias, quizás alguien quejándose del día que ha tenido, otra persona invitando a iniciar una revolución… habrá posts que te resulten interesantes y otros posts que no te interesen. Pero lo que estás haciendo es medir el termómetro del fediverso. Este es el tipo de cosas que te puedes encontrar dentro, aparte de otras reflexiones personales que pasen más desapercibidas.

Si pruebas con otros de los enlaces que te acabo de dar, tal vez veas los mismos posts, o tal vez veas otros nuevos. Debido a esta federación, un post se va propagando de una red a otra, así que puede volverse viral a lo largo de toda la red.

¿Pero por qué varios enlaces?

Te habrás dado cuenta que para ver Mastodon te he pasado tres links. Cuando quieres usar Instagram, visitas instagram.com. Cuando quieres usar TikTok, visitas tiktok.com. Pero una de las cosas que hacen diferente a Mastodon es que aquí no hay un único sitio web, sino que hay miles.

Eso es porque Mastodon realmente es lo que se conoce como una red federada, donde hay miles de puntos de acceso que hablan entre sí para fabricar una red de servidores. Piensa en la tarjeta SIM de un teléfono móvil. Para poder activarla tienes que unirla a la red de un operador. Ese es el operador al que pertenece. En tu zona puede haber varios operadores disponibles y es posible que haya gente de uno o gente de otro operador. Sin embargo, tú puedes llamar o mandar un mensaje a alguien, tenga el operador que sea, y aun así tu llamada se va a hacer.

Una calle estrecha junto a algunas casas bajas
Foto de Joseph Corl en Unsplash

Con Mastodon pasa algo parecido. El fediverso es la red interior que permite a todos los usuarios comunicarse, independientemente del servidor en el que se hayan abierto la cuenta. Cada uno de estos servidores, también conocidos como instancias, son pequeños vecindarios.

Cada uno de estos vecindarios tiene sus propios usuarios que publican cosas en ese sitio, y a diferencia de otras redes, este sistema de «pequeños vecindarios» hace posible una cosa que ninguna otra red social te puede ofrecer: puedes ver una lista con todo lo que escribe la gente de tu mismo servidor en tiempo real. Para que te hagas a la idea, en Instagram se publican más de 60.000 fotos cada segundo; no podrías verlas todas. Sin embargo, en algunas instancias el ritmo es tan calmado que podrías hasta ver lo que escribe todo el mundo, aunque en algunos casos no te va a interesar todo lo que vas a encontrarte, porque cada persona viene por una razón diferente.

Sin embargo, igualmente puedes seguir a personas de otros servidores. Al final, la red Mastodon es un sistema de hilos entrecruzados. Estés donde estés, todo el mundo puede hablar con los demás integrantes de la red, aunque usen otros servidores. Igual que cuando llamas por teléfono a alguien que usa otro operador de telefonía, vas a poder igualmente seguir para ver qué publican a personas de otros servidores, e interactuar con lo que dicen.

¿Por qué parece tan importante para algunas personas entonces elegir instancia? Cada uno de estos servidores puede tener sus propias normas. Por ejemplo, algunos exigen que se hable en un idioma concreto. Otros prefieren que se eviten ciertos temas. Algunos servidores son más estrictos que otros a la hora de permitir crear cuentas no personales, por ejemplo para blogs o canales de YouTube. En definitiva, cada servidor tiene sus propias reglas y su propia temperatura, así que dependiendo de donde te unas, puede que lo que puedas decir sea diferente.

Esto también puede provocar situaciones donde un servidor en el que se hable de temas controvertidos o que sean percibidos por otros servidores como peligrosos o tóxicos puedan ser restringidos, para que no haya tantas comunicaciones. Aunque, por lo general, lo que recibas de otros servidores no suele estar moderado siempre que no sea abiertamente ilegal (piensa que al final lo que guarda cada servidor es responsabilidad de la persona que montó el servidor), existen una serie de normas comunes a las que casi todas las instancias se adhieren. Normas que exigen un mínimo de civismo, como no insultar o atacar a otras personas, o etiquetar adecuadamente el contenido para adultos o sensible si se comparte. Los administradores de una instancia pueden bloquear o limitar todo el tráfico de otra si consideran que es una fuente de problemas para su comunidad local.

Ábrete una cuenta… ¿pero dónde?

Ya te he hablado antes de las instancias e incluso te he mencionado varias. Algunas personas aquí dirían que investigues cuál es la que más se alinee con tus intereses y te abras una cuenta ahí.

Sin embargo, otro consejo perfectamente válido si no quieres preguntarte todo esto es directamente abrir una cuenta en un lugar genérico. Por ejemplo, vamos a imaginar que quieres centrarte en cosas en español. Estas son algunas de las instancias de uso general donde podrías crearte la cuenta:

  • Ya he mencionado antes a paquita.masto.host. Paquita se define como una instancia con ideales feministas y que lucha contra el acoso de personas o grupos, por lo que este lugar va a ser una zona segura.
  • Otra instancia es masto.es, que se autodefine como «el mayor servidor de Mastodon para hispanohablantes de temática general». Aquí hay de todo, y aquí hay gente de todas partes y de todos los países donde se habla el español.

Además, también tienes instancias más temáticas o limitadas regionalmente para tener un contenido local más interesante.

  • Si te interesa más el contenido que tiene que ver con tecnología, videojuegos, anime… entonces puede que te interese más considerar tkz.one. Aunque no censuran que se hable de temas políticos o sociales, este servidor prefiere que se hable de cosas que tienen que ver con la temática de la instancia. De hecho, las cuentas centradas únicamente en el activismo reivindicativo (o sea, las que están todo el día hablando de activismo y política) no son muy bien recibidas aquí.
  • Si buscas información local de tu región, hay instancias centradas en países. Por ejemplo, tienes mstdn.mx como una instancia regional centrada en México, o mastodon.cl para Chile.

En cualquier caso, el movimiento de cuentas siempre es una opción, así que luego puedes trasladar tu cuenta a un nuevo servidor si quieres cambiar de aires o de normas. Mastodon trae un sistema de migración que permite que tus seguidores se muevan a la siguiente instancia, para que puedan seguir leyendo lo que escribes, aunque debes tener en cuenta que las publicaciones no se copian, se quedan en el servidor antiguo.

Lo dicho, si no se te ocurre algo mejor, mi consejo es que vayas directamente a un servidor como los que te he recomendado en esta sección, y vayas improvisando sobre la marcha para hacerte a la idea. Vas a encontrarte casi las mismas cuentas en todas partes.

Sigue gente que ya conozcas

Si conoces gente que sabes que tiene presencia en Mastodon, o servicios que sabes que están en Mastodon, les puedes seguir una vez te abras la cuenta. De este modo, podrías usar Mastodon para enterarte de lo que publican, o para usarlo como lector de noticias de esos productos que te interesan.

Para encontrar gente que ya conoces puedes poner el nombre de su cuenta en el buscador, y dejar que te lleve al perfil si lo encuentra. Otra opción es poner directamente el identificador de su cuenta. El identificador puede manifestarse de dos formas:

  • Una es como una dirección de e-mail que lleva otra arroba delante. Por ejemplo, @danirod@masto.es. La razón por la que parece un e-mail es porque lo que viene al principio es el nombre de usuario local, en este caso, danirod; y lo que viene después de la segunda arroba es el servidor donde tiene creada su cuenta, en este caso, masto.es.
  • Otra es como una URL. Por ejemplo, https://masto.es/@danirod. Si pones esto tal cual en el buscador, también te resolverá el perfil.

Otra opción es, si en su web o blog tienen un enlace a su perfil de Mastodon, seguir el link y pulsar el botón Follow directamente. Si no estás en tu misma instancia, verás un modal que te preguntará cuál es tu servidor. Cuando pongas ahí tu instancia, te enviará de vuelta al mismo perfil pero desde tu servidor, para que puedas pulsar el botón Follow.

En un pantallazo vemos el diálogo de seguir remotamente una cuenta de Mastodon.
Un ejemplo de la función seguimiento remoto, con la que puedes usar el botón Follow para seguir cuentas desde otros servidores.

Preséntate, y así encontrarás mutuals

Sin embargo, una de las primeras cosas que se recomienda hacer cuando llegas al fediverso es presentarte. Esto te permite, en primer lugar, demostrar que no eres un bot (ya que hay gente que no confía de las personas que sólo entran a espiar sin decir nada), y en segundo lugar, que si vas a escribir desde la cuenta, te descubra gente que tenga interés en lo que vayas a decir.

Escribe un mensaje de presentación que cuente algo sobre ti, tus intereses, qué te interesa ver, de qué quieres hablar… y etiquétalo con el hashtag presentaciones. También puedes explorar otros posts que lleven ese hashtag para ver qué dicen otras personas.

Lo creas o no, hay gente que está pendiente de ese hashtag, y que no dudará en darte la bienvenida. O, si te lee y encuentra que tu post es el tipo de cosas que le interesa, tal vez te siga.

Prueba a hacer algunas cosas como:

  • Agradecer las bienvenidas. Con pulsar el botón de la estrella para marcar su post como favorito es suficiente, aunque también puedes responder.
  • Revisar los perfiles de la gente que te está siguiendo. Tal vez esas personas publiquen sobre temas que te interesen y puedas seguirles para empezar a llenar de vida tu portada.

Si sigues a alguien que también te sigue, entonces ahora sois lo que se conoce como mutuals, porque os seguís mutuamente.

¿Más consejos para regresar?

En este blog comparto de vez en cuando consejos y tutoriales sobre el fediverso, Mastodon y otras redes similares. Es posible que te interese echarle un vistazo a las páginas de etiqueta para ver el archivo de lo que he publicado en el pasado. O tal vez te interese esto:

Atajos de teclas para Terminator, el veterano emulador de terminal

Aunque hoy en día el ecosistema de terminales se esté renovando y haya terminales de nueva generación hecha en lenguajes más jóvenes y modernos, Terminator sigue siendo una de las terminales más sólidas y válidas para quien busque un emulador de terminal avanzado en el que hacer su trabajo sin interrupciones.

Puede que uses Terminator y sólo uses su faceta de «una ventana, una terminal». Sin embargo, realmente tiene mucho más que aportarte, y te lo voy a mostrar en esta entrada de blog.

Dividir la terminal

Si estás haciendo dos cosas a la vez, como puede ser escribir un archivo de configuración a la vez que miras otro archivo como referencia; o bien escribir en un archivo de configuración a la vez que miras la salida de otro comando, tal vez te interese usar los splits para dividir la terminal en regiones.

  • Con la combinación de teclas Ctrl + Mayus + E puedes dividir verticalmente el panel actual.
  • Con la combinación de teclas Ctrl + Mayus + O puedes dividir horizontalmente el panel actual.

Un panel es cada una de las terminales reales que ves en la ventana, y que identificas porque es ese cuadrado que tiene un área rojo para el título arriba por defecto (salvo que cambies los ajustes visuales del programa).

Ten en cuenta que puedes hacer varias divisiones si quieres, pero cada vez que pulses la combinación de teclas de dividir, lo que harás es dividir el panel actual, así que salvo que cambies el tamaño de los paneles, cada uno de los nuevos paneles será más pequeño.

Un split de Terminator con dos paneles.
Un split de Terminator con dos paneles.

Movimiento por los paneles

Cuando tengas múltiples paneles, vas a poder también moverte por ellos con estas combinaciones de teclas.

Para empezar, puedes usar Alt + ←↓→↑ (o sea, cualquier tecla de dirección) para cambiar el foco del teclado a otro panel. Cada tecla de dirección es la dirección a la que mover el foco. Por ejemplo, Alt + mueve el foco al panel que haya a la derecha del que tiene el foco ahora mismo.

Algunas personas tal vez encuentren que este atajo de teclas es incómodo debido a que tienen que llevar la mano demasiado lejos en el teclado para poder pulsarlo. En las opciones de Terminator pueden cambiar el atajo de teclas por otro de su elección. Tal vez prefieran usar HJKL para este fin. O 5678, homenaje a la ZX Spectrum.

Por lo menos, estaremos de acuerdo en que es mejor eso que levantar la mano del teclado, agarrar el ratón, mover el puntero hacia otro panel, y hacer clic en él.

Si sólo quieres rotar entre dos paneles, o rotar en orden, otras combinaciones que te pueden interesar son Ctrl + Mayus + N y Ctrl + Mayus + P. N y P son las iniciales de Next y Previous, así que estas combinaciones sirven para cambiar al panel siguiente y anterior.

Finalmente, si en algún momento necesitas concentrarte en un panel, puedes pulsar la combinación Ctrl + Mayus + X para hacer zoom y ponerlo a pantalla completa, escondiendo otros paneles. Al pulsarla de nuevo, volverá a su tamaño normal y volverás a ver el resto de paneles.

Usar grupos

Los grupos te permiten agrupar (como su nombre indica) varios paneles, para que al pulsar una tecla, se envíe a la vez a todas las terminales. Esto es algo que puede ser de utilidad en algunos casos, como que te conectes a varios sistemas remotos mediante SSH y quieras mandar un comando a todas las sesiones a la vez.

Aunque lo de los grupos es un mundo, porque lo puedes combinar de formas muy diversas, te voy a derivar por el momento hasta que haga una guía sobre ese tema a la ayuda de Terminator, donde te pueden explicar cómo crear grupos concretos y agregar paneles específicos para compartirlos ahí.

Sin embargo, si quieres mandar teclas a todas las terminales a la vez, puedes usar la combinación de teclas Super + G. Generalmente, Super va a ser la tecla Windows, así que: Windows + G. Al pulsar esa tecla, se activa este modo. Lo notarás porque los paneles que se acoplan al tuyo cambian la barra de título por una azul para señalar que están en modo de escucha.

Cuando pulses una tecla, cualquier terminal que esté con el título en azul también recibirá la tecla, así que podrías mandar comandos a varias terminales a la vez. Recuerda desactivar este modo cuando hayas terminado para no cometer errores graves. Para desactivar este modo, pulsa Super + Shift + G. De nuevo, Super suele ser la tecla Windows en un teclado tradicional, o la tecla Comando en un teclado Apple.

Cómo recuperar la contraseña de tu cuenta en Ubuntu 24.10

He revisado las instrucciones para asegurarme que son compatibles con Ubuntu 24.10. Ponte que un día enciendes tu ordenador y por lo que sea no logras pasar de la pantalla de inicio de sesión en Ubuntu porque has olvidado la contraseña. Por ejemplo, puede que sea una partición a la que entras una vez cada muchos meses. Esto es lo que tendrías que hacer.

Lo que vas a hacer va a ser entrar en modo recuperación. Es un tipo de arranque especial que se usa para reparar errores en el sistema. Llegar hasta este menú a veces es complicado, y hay que pulsar muchos botones, así que te recomiendo que primero leas los siguientes párrafos antes de tocar el ordenador, para que puedas prepararte.

Para entrar en el modo recuperación antes tienes que lograr ver en tu ordenador una pantalla como esta:

Pantalla de inicio de GRUB.
Menú de arranque GRUB.

Si tienes más de un sistema operativo instalado en tu sistema (por ejemplo, tienes Windows y Ubuntu), es probable que, de hecho, la veas siempre que enciendes el ordenador. Sin embargo, si no recuerdas haberla visto, tal vez sea porque tu sistema la esconde para encender más deprisa.

Si no recuerdas haber visto esta pantalla, vas a tener que pulsar una tecla mientras el ordenador se enciende para forzar que aparezca. La tecla normalmente es la Escape, pero en algunos ordenadores antiguos puede ser la Mayúsculas. No te preocupes. Si no funciona y vuelves a la pantalla de contraseña de Ubuntu, puedes reiniciar y volverlo a intentar.

Cuando pulses esa tecla, pueden pasar varias cosas.

Una, sería rara, pero es que entres al menú de configuración de la placa base de tu ordenador (lo que tradicionalmente se ha venido llamando el menú BIOS). No te interesa estar aquí, porque ese menú es para cambiar cosas como el orden de los discos duros, la velocidad del ventilador, la memoria… Sal del menú como corresponda en tu placa base. La próxima vez que enciendas el sistema, espera unos segundos antes de empezar a pulsar Escape o Mayúsculas, para que el ordenador no se piense que intentas abrir el menú.

Otra cosa que puede pasar, es que veas una pantalla como esta, donde sólo se ve grub>. A lo mejor hasta varias veces, debido a que has mantenido pulsada la tecla Escape lo suficiente. Si ves esta pantalla, escribe normal y pulsa Enter. Deberías acceder al menú, aunque en mis experimentos algunas veces puede que salte directamente al arranque de Ubuntu. Reinicia y vuelve a intentarlo.

Consola interactiva de GRUB mostrando el prompt.
Si ves esta consola que dice grub, escribe normal y pulsa Enter.

Cuando veas la pantalla que nos interesa, que es la que te mostraba antes, lo primero que quiero que hagas es pulsar las teclas Abajo y Arriba del teclado. La razón es que, a menudo, esta pantalla lleva un temporizador que arranca el sistema automáticamente si no haces nada, y al pulsar una tecla lo cancelarás para que puedas tomarte tu tiempo.

Pulsa las teclas Abajo o Arriba, y selecciona desde el menú la opción Advanced options for Ubuntu. Luego pulsa Enter para activarla. Se abrirá un submenú donde debes volver a usar las teclas de dirección para seleccionar alguna opción que termine en (recovery mode), y luego pulsa Enter para iniciar el sistema así.

Menú de inicio de GRUB con la opción "recovery mode" activa.
Esta es la opción que te debe interesar.

Después de un arranque caótico, deberías acabar viendo una pantalla con fondo rosa-morado y este mensaje.

Pantalla de inicio del menú de recuperación de Ubuntu.
Menú de recuperación de Ubuntu

Tendremos que hacer lo siguiente. Primero, hacer que se puedan modificar archivos sobre el disco. Para ello, utiliza la tecla Abajo para desplazarte hasta la tercera fila, la que dice dpkg, y pulsa Enter. Esto mostrará un mensaje que diga algo como: "Continuar remontará el sistema de archivos / en modo lectura/escritura y montará cualquier otro sistema de archivos definido en /etc/fstab. ¿Quiere continuar?", al que debes responder que sí pulsando Enter.

El objetivo es que el disco se monte en modo escritura, de modo que podamos cambiar la contraseña para poder usarla en el próximo reinicio. Realmente no pretendemos hacer nada con dpkg, es solamente una excusa para que cambie el disco; aunque a cambio, ahora al menos sabes que no tienes paquetes rotos en tu sistema.

Aparecerán varios mensajes por pantalla. Esto es un proceso normal. Simplemente, espera a que diga "Finalizado, ahora pulse Intro", y entonces… pulsa la tecla correspondiente.

Regresarás al mismo menú. Ahora pulsa varias veces la tecla Abajo hasta seleccionar la entrada que dice root, y pulsa Enter. Esta es la opción para iniciar una consola de superusuario en tu ordenador. Es como haber entrado siendo root directamente, sin tener que introducir la contraseña.

Aparecerá un mensaje que diga "Pulsa Enter para mantenimiento". De nuevo, pulsa Enter. Con esto activarás una shell. Todo lo que tienes que hacer ahora es escribir el siguiente comando: passwd, luego un espacio, y luego el nombre de tu cuenta de usuario. Por ejemplo, si tu cuenta de usuario es paquita, escribirías:

passwd paquita

Te preguntará por la nueva contraseña. Escríbela despacio para no cometer errores, y luego pulsa Enter. Te pedirá que la escribas una segunda vez, para confirmar que no has cometido faltas de ortografía. Vuélvela a poner, y pulsa Enter. Verás un mensaje que dice passwd: contraseña actualizada correctamente.

Es posible que si la contraseña que escribes es demasiado corta, veas un mensaje que dice CONTRASEÑA INCORRECTA: La contraseña tiene menos de 8 caracteres. Sin embargo, como estás usando el modo de recuperación y estás en una consola de superusuario, te dejará continuar igualmente.

Con este procedimiento hecho, sólo queda reiniciar el sistema, escribiendo reboot, y ya deberías tener acceso al sistema usando la nueva contraseña que acabas de establecer.

Dos formas de habilitar sudo para una cuenta en GNU/Linux

Hoy en día, lo normal al instalar GNU/Linux en un sistema es que la primera cuenta que se configura durante la instalación esté considerada como cuenta administradora. Con el comando sudo puede identificarse para confirmar que realmente al otro lado del teclado está la persona que dice estar y no un impostor, y así ejecutar comandos o cambiar opciones que requieren permisos elevados porque introducen cambios al funcionamiento del sistema operativo, como instalar programas nuevos.

Sin embargo, ¿qué hacemos cuando queremos darle estos permisos a otra cuenta? Por ejemplo, en un entorno de trabajo grande donde tengamos varias personas que puedan administrar un sistema. No querríamos que toda la administración de la máquina caiga sobre una misma persona en una gran empresa. Tal vez haya varias personas para administrar los servidores e instalar comandos, según se pongan de acuerdo.

En ese caso, lo que tendremos que hacer es convertir una cuenta de usuario en administradora. Este es un proceso casi chamánico que requiere la intervención de otra cuenta que ya sea administradora, para darle la bienvenida a la nueva cuenta al club. Sin embargo, la forma en la que se hace este proceso depende un poco de la instalación.

El grupo de sudoers

Por lo general, hoy en día casi cualquier distribución GNU/Linux utiliza un grupo de usuarios para identificar a estas cuentas. Así, al agregar o quitar personas del grupo, se les puede dar o revocar estos permisos sin involucrar más configuración.

Este grupo llevará uno de los dos nombres. Históricamente, el grupo se denominaba wheel. Existen varias teorías sobre el origen de este nombre, ninguna posiblemente importe en este momento. Lo clave es que, a pesar de ser el nombre usado en el UNIX tradicional, muchas distribuciones GNU/Linux continúan usando este nombre a día de hoy. Red Hat y Arch Linux, por ejemplo. Esto incluye derivadas: Fedora, Manjaro, EndeavourOS…

Sin embargo, en el caso de Debian, el nombre de este grupo es sudo. Esto es importante porque también afecta a todas las distribuciones que emanan de Debian. Así, distribuciones como Ubuntu o Linux Mint también usan sudo como nombre de este grupo.

Una vez identifiques el nombre del grupo, deberás agregar al usuario que quieras dar permiso de superusuario a este grupo. En el caso de las distros que tengan un script groupadd, podrías usar ese script. Sin embargo, por lo general se da por hecho que el programa alternativo usermod es casi universal y que permite agregar a un usuario a un grupo con la siguiente invocación de terminal:

sudo usermod -aG grupo usuario

No te olvides de poner los flags -aG. El primero sirve para agregar grupos en vez de sustituirlo. Más te vale no olvidar ponerlo, o podrías borrar los grupos a los que pertenezca la cuenta en este momento. El segundo parámetro sirve para especificar precisamente esos grupos. grupo será wheel o sudo según el tipo de distribución que uses, y usuario es el nombre de la cuenta que quieres agregar.

Por ejemplo, para meter a julian al grupo de administradores en Debian, usaríamos:

sudo usermod -aG sudo julian

Y para agregar a laura al grupo de administradores de Fedora, usaríamos:

sudo usermod -aG wheel laura

Para los casos más exagerados: modificar manualmente el archivo sudoers

El archivo sudoers guarda la configuración de sudo. Es importante modificar este archivo utilizando el comando visudo, para que tras editarlo se valide. La razón de esto es que si el archivo /etc/sudoers tiene errores, es posible que sudo deje de funcionar. visudo se ocupará de avisarte si está mal configurado antes de cerrar sesión, potencialmente bloqueando el sistema.

Para modificar este archivo, generalmente basta con escribir lo siguiente en una terminal para abrir el archivo con tu editor por defecto en estos casos (nano, vim…):

sudo visudo

La forma más rápida de agregar una cuenta a este archivo es incorporando una línea que contenga lo siguiente:

[usuario] ALL=(ALL:ALL) ALL

La razón por la que hay que escribir tantas veces la palabra ALL es compleja de contar ahora y no viene al caso, pero lo podría dejar para el futuro. También puede que aprendas algo al respecto si miras el manpage que define este archivo, con man 5 sudoers.

Por ejemplo, para agregar manualmente a julian como sudoer, podrás agregar lo siguiente a tu archivo de configuración:

julian ALL=(ALL:ALL) ALL

Sin embargo, en cualquier caso, generalmente es más flexible si agregas todo un grupo de usuarios y luego usas usermod para agregar y quitar personas de un grupo.

Para permitir a todo un grupo utilizar sudo, puedes usar un formato parecido, pero poniendo un símbolo de porcentaje como prefijo. Es decir, algo como esto:

%[grupo] ALL=(ALL:ALL) ALL

Es raro que no esté, pero debería haber una línea en tu archivo de configuración que tenga este formato:

%sudo ALL=(ALL:ALL) ALL

Esta es la línea que permite a cualquier cuenta que forme parte del grupo sudo ejecutar cualquier comando del sistema como superusuario.

¿Grupos o edición manual?

Sobre qué es mejor, diría que el grupo. Es más flexible, no te obliga a editar el archivo sudoers manualmente, que siempre trae riesgos, y es más rápido. Además, un grupo te permite hacer cosas como dar permisos para leer o escribir en archivos, lo que también permite a esa cuenta poder conceder o restringir el acceso a logs y otros archivos relacionados.

Sin embargo, existen algunas situaciones donde puede venir bien editar manualmente el archivo sudoers. Este archivo es realmente complejo y puede usarse para permitir cosas como limitar qué comandos puede ejecutar una cuenta mediante sudo, e incluso permitir que una cuenta que no sea administradora pueda ejecutar algunos comandos concretos. Esto tiene casos de usos específicos, como permitir que una cuenta pueda ejecutar ciertos comandos sin darle acceso global a toda la máquina.

¿Para qué sirve sudo? Lo esencial a saber para administrarlo de forma segura

El modelo de seguridad de las distribuciones Linux y de UNIX en general, se basa en tener una cuenta administrativa, denominada root, que tiene acceso completo a la máquina y que puede cambiar toda la configuración del sistema; y cuentas locales que no tienen tantos permisos para que en el día a día se pueda usar de forma segura el sistema sabiendo que ni por accidente este se podría comprometer.

Incluso aunque seas la única persona que usa tu ordenador personal, este modelo de seguridad resulta útil, porque requiere que seas consciente cuando vas a cambiar ajustes cambian el funcionamiento del sistema operativo. Así evitas por accidente desinstalar un paquete esencial para que funcione la máquina, como el cargador de arranque. Incluso impedirá que ejecutes por accidente un script malintencionado (por ejemplo, un código que hayas descargado de internet sin leer antes de ejecutar) que trate de hacer cosas maliciosas que puedan dañar tu máquina, como borrar el directorio /usr.

Con sudo, forma corta de super user do, puedes hacer el salto de una cuenta local a una cuenta privilegiada. Por ejemplo, para ejecutar el comando privilegiado systemctl stop networking, que detendría la red, necesitarás elevar tus privilegios, para evitar que por accidente desconectes un servidor. Necesitas anteponerle la palabra sudo, y entonces al ejecutar sudo systemctl stop networking ejecutarías ese comando de forma privilegiada.

Para adquirir esos privilegios, debes estar en una lista de usuarios autorizados. Así podrás elegir quiénes pueden realmente ejecutar esos privilegios. Un administrador de un laboratorio podría estar en la lista de usuarios autorizados para preparar los ordenadores de sus estudiantes antes de una clase, pero los estudiantes podrían quedar fuera de la lista para evitar que ejecuten sudo y hagan de las suyas.

Para confirmar que realmente eres tú, sudo te pide por lo general que escribas tu contraseña antes de lanzar el comando. De este modo, verifica tu identidad. Y si en cualquier caso escribes bien la contraseña de tu cuenta, pero los administradores de tu sistema han decidido que no debes estar en la lista para ejecutar comandos privilegiados, no te va a dar permiso, mostrándote el famoso mensaje El usuario no está en el archivo sudoers; este incidente será reportado.

Por lo general sudo recuerda tu presencia durante unos minutos para que no tengas que volver a escribir la contraseña si vuelves a ejecutar inmediatamente otro comando que empiece por sudo, pero en su forma general, deberías asumir que cuando trates de ejecutar un comando privilegiado con sudo, te va a pedir la contraseña para ver que realmente eres tú y no otra persona entrando en tu ordenador porque te has dejado el portátil desbloqueado cuando has ido a por un café o al baño en un lugar con más personas.

La forma de configurar esta lista de usuarios es modificando el archivo /etc/sudoers. Y la forma correcta de hacerlo, es mediante el programa visudo, usando el comando sudo visudo. El comando visudo abre inmediatamente el archivo /etc/sudoers con tu editor de textos de terminal favorito, como Vim o Emacs, y te permite modificar su contenido. Sin embargo, cuando guardes y cierres el archivo, visudo inmediatamente validará que el archivo sea correcto, y te avisará de errores si está mal configurado.

La razón por la que debes usar visudo en vez de modificar manualmente el archivo /etc/sudoers es, porque si cometes un error en ese archivo, podrías dañar el funcionamiento de sudo. Y en sistemas donde no haya una forma alternativa de recuperar el control (por ejemplo, en esas distros GNU/Linux que directamente desactivan el inicio de sesión como root), dañar sudo podría suponer que bloquees tu ordenador. visudo siempre validará que el archivo esté correcto, y sólo guardará tus cambios si están bien y si no hay manera de bloquear el sistema.

Evidentemente, para usar visudo necesitarás ser un usuario privilegiado, así que la invocación completa es sudo visudo. Así evitamos que una persona que no tenga permisos trate de modificar la lista de usuarios privilegiados, que es algo que rompería completamente el sistema de seguridad. Solamente alguien que tenga permisos suficientes debería poder modificar la lista.

De todos modos, hay formas de configurar sudo para que se pueda dar permisos privilegiados a un usuario para ejecutar únicamente comandos concretos. De este modo, podrías darle permisos a un usuario, físico o automatizado, para que ejecute comandos como sudo systemctl restart docker, pero que a la vez le falten permisos para ejecutar otros comandos como sudo poweroff. También existen forma de configurar sudo para que ciertas cuentas de usuario o ciertos comandos no pidan contraseña.

Ejecutar comandos en el arranque de GNU/Linux con systemd

Si tienes que ejecutar un comando cuando se enciende el ordenador, como iniciar manualmente un servicio o hacer un ajuste sobre un driver, puedes orquestarlo con systemd.

En este ejemplo vamos a ver cómo ejecutar un comando, como un script, cuando se enciende el ordenador. El objetivo es que durante el proceso de arranque, se invoque el comando; por ejemplo, que si el comando es un script que debe escribir algo en un archivo, lo haga. Para ello, nos estaremos apoyando en systemd, y crearemos una unidad personalizada que ejecute ese comando durante el arranque.

Esto contrasta con otras formas de ejecutar programas al encender el ordenador, como ponerlo en el autostart de nuestro entorno de escritorio o agregarlo al .bashrc, de que se hará durante el proceso de arranque, así que normalmente se ejecutará mientras el ordenador está iniciando, antes siquiera de que pongamos la contraseña.

Creamos un script de apoyo

En este ejemplo, fabricaré un script auxiliar que será el que defina lo que quiera que ocurra cuando se encienda el ordenador. Para este caso particular, haré que mi script escriba algo sobre uno de los archivos del directorio /sys, una operación típica para modificar el funcionamiento de alguno de los dispositivos de hardware del ordenador.

Crearé un script denominado update-led.sh con el código de mi script:

$ cat > update-led.sh <<EOF
> #!/bin/bash
> echo 1 > /sys/devices/platform/leds/leds/red:standby/brightness
> EOF
$

Como este script requiere ser ejecutado como root, lo pondré en una ubicación más propia del sistema, como /usr/local/sbin, y lo haré ejecutable:

sudo mv update-led.sh /usr/local/sbin/update-led.sh
sudo chmod +x /usr/local/sbin/update-led.sh

Si ahora queremos probar que el script funciona correctamente, lo podríamos ejecutar si es que es una opción en primer lugar.

Invocar el script al arrancar el sistema

Ahora definiré una unidad de systemd que todo lo que tiene que hacer es invocar este script que he fabricado. Para ello crearé un archivo en el directorio /etc/systemd/system, que es donde se colocan las unidades personalizadas de systemd. El archivo podrá tener el nombre que más nos interese, pero deberá terminar por .service. El nombre que le demos, quitando el .service, será como luego será ejecutado mediante systemctl start y similares.

Este archivo tendrá que contener lo que describo más abajo, cambiando las siguientes líneas de interés:

  • Description será cambiado por un comentario sobre qué hace el comando, para identificarlo semanas después, por ejemplo, «arreglo para el driver de red» o «ejecuta rm -rf a .cache».
  • ExecStart será cambiado por la ruta completa al script que hayas creado en tu caso.
[Unit]
Description=Activar el LED

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/update-led.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Este servicio está declarado como oneshot. systemd es bueno ejecutando programas que tienen que estar en marcha todo el tiempo mientras el ordenador está encendido, como el sistema de audio, un agente SSH o GPG… Sin embargo, en este caso le pediremos que ejecute el comando una vez y ya está. La instrucción RemainAfterExit también se usa para señalizar que si el comando termina, todo estará correcto.

Finalmente le pediremos a systemd que active esa unidad, ejecutándola a partir del próximo reinicio. Supongamos que el archivo de unidad se denomina update-led.service, pues el nombre a activar será update-led:

sudo systemd enable update-led

Y opcionalmente si queremos probarlo ya, podemos pedirle que ejecute el script inmediatamente con:

sudo systemd start update-led

passwd: todo lo que debes saber

Un tutorial para poder utilizar el comando passwd que puede ayudar a las personas que recién llegan a UNIX.

El post en el que explicaba cómo recuperar la contraseña de Debian me dio la idea de profundizar más en el funcionamiento del comando passwd, ya que tiene varias formas de operar según cómo se llame a este comando.

passwd sirve para cambiar la contraseña de una cuenta. Si ejecutas el comando normal en tu terminal, por ejemplo, passwd, bajo tu propia cuenta de usuario solo podrás cambiar tu propia contraseña. Sin embargo, el auténtico poder de este comando está en invocarlo como superusuario (es decir, como root). Cuando la cuenta root ejecuta este comando, puede cambiar cualquier contraseña: la suya o la de otra cuenta.

Cuando invoques passwd con una cuenta normal, lo primero que hará es pedirte la contraseña actual, y así lo veremos cuando dice Current password. Aquí tenemos que meter la contraseña que tenemos ahora mismo. Esto es una medida de precaución para asegurarse de que un script automatizado no trata de cambiar nuestra contraseña sin permiso.

Ten en cuenta que cuando escribas una contraseña, no la verás por pantalla. Igual que pasa con el comando sudo, no habrá feedback. Ni si quiera unos asteriscos. Cuando empieces a escribir la contraseña, hazlo con determinación y no te detengas a medio de teclearla, para no cometer errores.

Después de escribir la contraseña actual y pulsar Enter, el sistema nos preguntará por la contraseña nueva que queramos establecer. En total la tendremos que escribir dos veces, porque nos pedirá confirmación. Así, si la hemos escrito mal, nos avisará para no bloquear nuestro sistema.

$ passwd
Current password:
New password:
Retype new password:
passwd: password updated successfully

Sobre esto, varias notas extra:

  • La configuración del sistema operativo podría traer reglas adicionales que pueden impedir que se guarde la contraseña. Por ejemplo, es posible que rechace cambiar la contraseña si no tiene un número mínimo de caracteres, o incluso si no junta alguna mayúscula o dígito.
  • Es posible que si pones la misma contraseña como nueva contraseña, te lo rechace y te diga que es la misma contraseña de todos modos.

Por último, el auténtico poder de este comando está en lanzarlo como root. Si lo hacemos podremos cambiar la contraseña de cualquier usuario si lo especificamos como parámetro al lanzar el comando. En este caso, de hecho, passwd no preguntará por la contraseña, lo que le convierte también en el comando ideal para usar si tenemos que recuperar una contraseña en concreto:

# passwd ana
New password:
Retype new password:
passwd: password updated successfully

Recuperar la contraseña de superusuario de Debian 11

¿Te has olvidado de la contraseña que le diste a la cuenta de root en tu instalación de Debian? Suele pasar si no la usamos con mucha frecuencia. Te cuento cómo usar el modo rescate para reestablecerla.

Cuando se configura Debian, una de las primeras cosas que pregunta el sistema operativo es qué contraseña le pretendemos dar a la cuenta de superusuario, es decir, a la cuenta root. Otras distribuciones GNU/Linux han decidido restringir el uso de la cuenta root y facilitar que la distribución se instale teniendo una cuenta superusuario como primera cuenta. No es el caso de Debian, que sigue dándole mucha importancia a la cuenta de superusuario root, y que ni siquiera configura por defecto sudo en la cuenta principal cuando se instala el sistema.

Sin embargo, ¿qué hacer cuando no hemos utilizado en una larga temporada esa cuenta y nos hemos olvidado de su contraseña? ¿Cómo podemos reestablecer la contraseña de root en Debian 11? Vamos a ver qué opciones tenemos en este post.

El juego de ejecutar passwd como root

El objetivo es conseguir tener acceso a una shell root desde la que podamos ejecutar passwd. Este es un comando interesante de administración de sistemas UNIX que sirve para cambiar una contraseña. Cuando lo ejecutamos como root, nos permite cambiar la contraseña de cualquier cuenta del sistema.

Si ponemos passwd sin más cuando somos root, cambiaremos la contraseña de root. Tan fácil como esto. De modo que el objetivo de este juego será conseguir una shell de root con la que hacer el cambio de contraseña.

El caso más simple es si ya tienes montado sudo en tu ordenador. Si tu cuenta personal está configurada para poder utilizar sudo, no tienes que hacer nada más que ejecutar sudo su. Con esto, utilizarás tu propia contraseña para acceder a una shell de root.

workstation ~ $ sudo su -
[sudo] contraseña para dani: 
[root@workstation ~]# passwd
Nueva contraseña:

Sólo recuerda que:

  • Cuando teclees la contraseña, esta no será visible por pantalla, así que teclea con confianza y sin detenerte. Con esto evitarás problemas si estás escribiendo palabras y no te equivocarás.
  • Tendrás que escribir la contraseña dos veces y tiene que coincidir. Si la has escrito mal alguna de las veces, te avisará y tendrás que volver a empezar.

Entrar en modo rescate

Si no tienes montado sudo, doas ni nada parecido (cosa que deberías), no quedará otra que entrar en modo de rescate. Resulta sorprendente lo fácil que es arrancar GNU/Linux en modo rescate saltándose cualquier medida de protección, pero si el disco no está cifrado, técnicamente no hay nada que impida hacer esto.

Para entrar en un modo rescate que nos permita saltar la contraseña, todo lo que haremos será reiniciar el ordenador y pulsar e cuando estemos en la pantalla de elección de entorno.

Pantalla de GRUB en Debian 11.

Al pulsar la tecla e aparece el editor de arranque. Con esto podemos modificar los comandos que se ejecutan por GRUB para arrancar el sistema operativo. Por dar la nota, cuando seleccionamos una opción premarcada como Debian GNU/Linux en GRUB realmente ejecutamos todas las instrucciones que se están viendo ahí.

Todo lo que haremos ahora será desplazarnos hacia la línea que empieza por linux (la que empieza por linux /boot/vmlinuz...). Nos desplazamos al final de la línea (aquí puedes usar Ctrl + E para ir rápidamente al final de la línea). Después, borramos las últimas palabras (ro quiet) y en su lugar pondremos rw init=/bin/bash. En definitiva, la línea de linux tiene que quedar tal que así:

    linux    /boot/vmlinuz-5.10.0-19-amd64 root=UUID=... rw init=/bin/bash

Ten en cuenta que la versión del kernel que acompaña a vmlinuz puede cambiar. Además, he suprimido el UUID completo de mi disco porque será diferente al tuyo. Una vez lo hayas comprobado, pulsa Ctrl-X o F10 para arrancar el sistema.

linux /boot/vmlinuz-5.10.0-19-amd64 root=UUID rw init=/bin/bash
El aspecto de GRUB para arrancar en modo rescate

Cuando termine de cargar, verás una shell. Esta shell está conectada al disco duro, por lo que con esto ya tenemos una sesión root para poder ejecutar algunos comandos. Deberías poder comprobar que el disco duro está montado en modo escritura. Esto es algo que puedes hacer ejecutando el comando mount y comprobando si en la salida se incluye una línea que contenga tu partición y la raíz (/). En los flags de montaje debe salir la opción rw. Por ejemplo, en mi caso veo:

/dev/vda1 on / type ext4 (rw,relatime)

Esto es suficiente de por sí.

Como puedes ver en tu shell, root@(none) implicará que tenemos una shell de root. Con esto ya podemos ejecutar el comando passwd y establecer una nueva contraseña para la cuenta de superusuario:

root@(none):/# passwd
New password:
Retype new password:
passwd: password updated successfully
root@(none):/#

Una vez que hagas esto, reinicia tu ordenador. Posiblemente a la fuerza si tienes problemas para escribir reboot. Deberías comprobar que si ahora tratas de escribir la contraseña de superusuario (por ejemplo, usando el comando su), ya te la aceptará.

Cómo crear y abrir archivos TAR desde la terminal

Te traigo un tutorial para que aprendas a usar el comando TAR, con el que puedes generar este tipo de archivos que tan útiles resultan para archivar o transmitir múltiples ficheros o carpetas.

Un archivo TAR es un contenedor que empaqueta múltiples ficheros y directorios en un único fichero para hacerlo más fácil de archivar y distribuir. Normalmente nos encontramos los archivos TAR cuando descargamos paquetes de internet, como código fuente de programas o distribuciones ejecutables, porque es más fácil de descargar un único archivo con todo el código fuente o con todo el programa, que descargar manualmente docenas de archivos con el riesgo de que no estén actualizados.

TAR en realidad son las siglas de tape archiver, y es que este programa fue diseñado en los tiempos en los que los archivos de este tipo, por ejemplo, las copias de seguridad, se hacían sobre cinta magnética. Ahí queda claro que el propósito de TAR era condensar toda una estructura de ficheros y directorios en un mismo flujo de datos que enviar a una cinta magnética, guardándolo para el futuro. Sin embargo, hace muchos años que las cintas magnéticas fueron superados por otros formatos más baratos y fáciles de usar, como los discos duros y las memorias de estado sólido, por lo que TAR, evidentemente, te va a permitir también compactar esos ficheros y directorios sobre un archivo regular que vas a poder compartir en un pendrive o subir a tu almacenamiento en la nube. Este es un dato que puede que ahora mismo te resulte más una anécdota, pero que puede que te explique cosas cuando inicie el tutorial.

Una cosa que debes tener en cuenta es que TAR no comprime archivos, solamente los empaqueta. Esta es una de las características de la filosofía UNIX, presente hoy día en sistemas operativos como GNU/Linux o cualquier BSD, entre muchos otros. Si lo que queremos es utilizar tecnologías libres para crear archivos comprimidos, igual que haríamos en Microsoft Windows con otros formatos como el 7z o el RAR, primero tendremos que crear un TAR del directorio a comprimir, y luego comprimir por separado el archivo .tar resultante. La ventaja de este sistema es que existen múltiples formatos de compresión de archivo, y al separar ambos pasos, podemos elegir el que nos interese para cada caso de uso, o incluso prescindir de la compresión. Si vas a crear un tarball de algunos tipos de archivo, como vídeo o imágenes JPG, tienes que saber que esos tipos de archivos ya llevan compresión, por lo que volver a comprimir el TAR generado no te va a aportar mucho.

Cómo creo un archivo TAR desde la línea de comandos

Para crear un archivo TAR, todo lo que tienes que hacer es identificar primero el fichero o directorio que quieres empaquetar. En este caso, por ejemplo, vamos a empaquetar una distribución de código fuente que queremos archivar en nuestra copia de seguridad.

workstation ~/CodigoFuente $ ls
fs.c  fs.h  gui.c  gui.h  main.c  Makefile  network.c  network.h  README

En este caso, lo más recomendable sería crear un archivo TAR de todo el directorio CodigoFuente completo. Cuando fabricas un archivo TAR, toda la estructura de directorios se mantiene. Esto quiere decir que si comprimo la carpeta CodigoFuente, dentro del TAR se recordará cada uno de los subdirectorios que existen, y a qué directorio le pertenece cada uno de los ficheros que hay dentro del archivo. Y esto es ventajoso porque cuando lo extraigamos posteriormente, nos dejará los archivos colocados en una subcarpeta, para un acceso más limpio.

Se trata de evitar lo que de otro modo se conoce como tarbomb. Una «tarbomb» o «bomba TAR» ocurre cuando al extraer un archivo, nos llena el directorio actual de archivos extraídos, haciendo mucho más complicado encontrar cuáles son los archivos que vienen del TAR y cuáles son los que ya estaban en el directorio de trabajo antes de iniciar la extracción. Es una mala práctica y van a odiarte mucho si esto ocurre, por lo que lo mejor es comprimir la carpeta completa desde arriba:

Nos vamos a ir al directorio superior y vamos a ejecutar el siguiente comando para comprimir:

workstation ~/CodigoFuente $ cd ..
workstation ~ $ tar -cvf CodigoFuente.tar CodigoFuente
CodigoFuente/
CodigoFuente/network.h
CodigoFuente/main.c
CodigoFuente/gui.c
CodigoFuente/fs.h
CodigoFuente/Makefile
CodigoFuente/network.c
CodigoFuente/fs.c
CodigoFuente/gui.h
CodigoFuente/README

Os describo qué se ha hecho aquí. El comando tar, que es el que se usa para crear y abrir archivos de tipo tar, está lleno de opciones. Podemos ver un extracto de estas opciones si ejecutamos el comando tar --help, aunque también podemos ver en detalle un manual de instrucciones si ejecutamos man tar y nos leemos su manpage.

Podemos modificar muchísimos aspectos a la hora de crear archivos, incluyendo la posibilidad de actualizar un TAR ya existente, o de conservar la información de permisos de archivo en un sistema UNIX. En este caso, no le estoy dando tantas opciones: apenas le dí los siguientes flags, -cvf. Si vamos a pasarle varias opciones, podemos simplificarlo y en vez de escribirlo como -c -v -f, lo podemos pasar todo junto como -cvf. El efecto será el mismo.

En este caso, las opciones que le he dado son:

  • -c: con esta opción, lo que le digo a TAR es que vamos a crear un archivo TAR. Debería venir de las primeras, ya que esta opción es la que le dice al programa qué va a hacer hoy, si crear, listar o extraer.
  • -v: con esta opción voy a activar el modo verboso. Esto significa que cada vez que TAR procese un archivo, va a escribir a la terminal una línea diciendo cómo se llama el archivo que se ha procesado. Esto nos viene bien para dar seguridad, aunque en algunos casos podemos quitar la opción para hacer más silenciosa la ejecución.
  • -f: con esta opción, le especifico que quiero que me procese el TAR sobre un archivo. Este paso parece obvio pero hay que aclararlo, por las razones que comentábamos antes: TAR es realmente capaz de volcar datos en muchas partes, archivos, cintas e incluso sobre la salida estandar en bruto. Por lo tanto, tenemos que especificar la opción -f para pedirle que vuelque sobre un archivo, cuyo nombre, de hecho, tiene que venir después. Por eso, a continuación de la opción -f nos encontramos ese CodigoFuente.tar. Con esto le estamos diciendo cómo queremos que se llame el archivo de código fuente que queremos que nos genere.

Después del CodigoFuente.tar que pertenece a esa opción -f, tenemos que poner la lista de archivos regulares y directorios que queremos incluir en el archivo. En este caso voy a poner simplemente CodigoFuente porque quiero que me incluya el directorio con todos sus descendientes. Si quisiésemos incluir más elementos en el archivo, podríamos poner la lista completa. Por ejemplo, tar -cvf Salida.tar Carpeta1 Carpeta2 Carpeta3 Leeme.txt.

Una vez ejecutamos el comando, tenemos nuestro archivo CodigoFuente.tar correctamente creado.

Cómo listo el contenido de un archivo TAR

Supongamos que tenemos un archivo TAR y queremos saber lo que hay dentro sin extraerlo. Igual que podemos usar la opción -c para crear un archivo TAR, tenemos más opciones para inspeccionar o para extraer el contenido de uno de estos archivos.

Veamos cómo utilizar la opción -t, que lo creas o no quiere decir --list, es decir listar el contenido de un archivo. Para este ejemplo, he colocado en mi carpeta de descargas un paquete que he obtenido de internet y que está en formato TAR:

workstation ~/Downloads $ ls
gzip-1.12.tar
workstation ~/Downloads $ tar -tf gzip-1.12.tar
gzip-1.12/
gzip-1.12/gzip.1
gzip-1.12/zcmp.in
gzip-1.12/cfg.mk
gzip-1.12/configure.ac
gzip-1.12/gunzip.1
gzip-1.12/zmore.in
gzip-1.12/zip.c
gzip-1.12/zless.in
gzip-1.12/zforce.in
[etc]

En este caso, como se ve, el comando que he usado es tar -tf. La explicación de parámetros me va a llevar menos tiempo:

  • -t, como he dicho, pone TAR en modo listar. No se va a extraer nada, solamente se va a enumerar lo que hay dentro del archivador. El resultado del comando se volcará sobre salida estandar, lo que significa que lo veremos en nuestra terminal o que lo podremos mandar a otro programa.
  • -f es, de nuevo, la opción que usamos para especificar que queremos trabajar con un archivo, ya que de otro modo le podríamos especificar otra fuente de datos; tal vez un flujo de entrada estandar que venga de un lugar como pueda ser internet o incluso un lector de cintas magnéticas de verdad. Y de nuevo, le especificamos a continuación el archivo que queremos que procese.

En este caso, no le estoy proporcionando la opción -v porque el comando va a generar igualmente una lista de resultados quiera o no, así que no es necesario especificarlo.

Cómo extraigo un archivo TAR

Finalmente, vamos a ver como extraer un archivo. Se hace, como antes, modificando los parámetros que le pasamos al comando tar, y poniéndolo esta vez en modo extracción, que es la opción -x, de extract.

Vamos a hacer el ejemplo usando el mismo paquete que he mostrado en el caso anterior.

workstation ~/Downloads $ tar -xf gzip-1.12.tar 
workstation ~/Downloads $ ls
gzip-1.12  gzip-1.12.tar
workstation ~/Downloads $ ls gzip-1.12
aclocal.m4      gzip.doc     unzip.c
algorithm.doc   gzip.h       util.c
AUTHORS         inflate.c    zcat.1
bits.c          INSTALL      zcat.in
build-aux       lib          zcmp.1
cfg.mk          lzw.h        zcmp.in
ChangeLog       m4           zdiff.1
ChangeLog-2007  maint.mk     zdiff.in
configure       Makefile.am  zegrep.in
configure.ac    Makefile.in  zfgrep.in
COPYING         NEWS         zforce.1
deflate.c       README       zforce.in
dfltcc.c        revision.h   zgrep.1
dist-check.mk   sample       zgrep.in
doc             tailor.h     zip.c
GNUmakefile     tests        zless.1
gunzip.1        THANKS       zless.in
gunzip.in       TODO         zmore.1
gzexe.1         trees.c      zmore.in
gzexe.in        unlzh.c      znew.1
gzip.1          unlzw.c      znew.in
gzip.c          unpack.c

En este caso, he prescindido de la opción -v. De habersela dado, podría obtener un listado de los archivos que se iban extrayendo a medida que esto iba ocurriendo. Os he querido enseñar aquí que no siempre es necesario poner el comando en modo verboso, y que a veces se puede extraer en silencio. Sin embargo, si vamos a extraer grandes copias de seguridad desde la terminal y no nos molesta, tal vez nos interese presentar con la opción -v un progreso de la extracción, para saber por lo menos que todo está yendo bien cuando miremos la terminal.

En este caso, el comando completo que he usado tiene como parámetros -xf. Como os hacéis a la idea, la opción f sirve para decirle cómo se llama el archivo que queremos extraer. Sin embargo, en este caso, la opción -x es la que usamos para, como os digo, pedirle a TAR que extraiga.

Por suerte, este paquete está bien montado y cuando se extrae genera un directorio llamado gzip-1.12 con el código funete de la aplicación. Si entre manos tuviésemos una tarbomb, mi directorio de descargas ahora estaría lleno de archivos, y yo tendría que echar más tiempo en limpiar luego, con el fin de quitar lo que sirve y lo que no.

¿Cómo instalaría WinRAR en GNU/Linux?

Esta es una de las preguntas más típicas para alguien que llega a GNU/Linux por primera vez. Voy a intentar aclarar un poco la confusión sobre GNU/Linux, archivos RAR y cómo extraerlos.

Lamentablemente, no puedes instalar WinRAR en GNU/Linux porque no existe versión de WinRAR para GNU/Linux. Sin embargo, es posible igualmente extraer de forma gratuita archivos .rar usando el programa unrar. En este artículo te cuento cómo.

Tienes que tener en cuenta, antes que nada, que el formato de archivos RAR es un formato propietario. Esto quiere decir que no es libre y abierto, y que la empresa detrás de WinRAR controla la creación de herramientas que interactúen con sus archivos. Esta es la razón por la que tan complicado es encontrar un software que simplemente extraiga archivos RAR: nadie se quiere meter en problemas con WinRAR.

Aunque puedes hacer lo que quieras, sería recomendable reemplazar los archivos .rar por otros formatos de archivos diferentes para comprimir, que no tengan restricciones tan severas, como .zip o .tar.gz. Con esto, es posible intercambiar más fácilmente archivos comprimidos porque no depende tanto de que las dos personas tengan la capacidad para extraer archivos .rar.

Cómo extraer archivos RAR en GNU/Linux con unrar

La mayoría de distribuciones GNU/Linux traen igualmente un programa en sus repositorios llamado unrar. Si bien WinRAR es un programa para Windows «de pago» (o al menos, trialware), su desarrollador ha tenido la delicadeza de proporcionar una versión gratuita (que no libre) para GNU/Linux que es capaz de descomprimir archivos.

Antes de instalarla, conviene que te plantees si la necesitas. Algunas distribuciones modernas, como Fedora, son capaces de extraer archivos RAR simplemente haciendo doble clic sobre ellos desde el explorador de archivos. Ya hemos hablado de esto alguna vez en esta web. Si lo único que necesitas es extraer un par de documentos, tal vez con esto te baste.

Si no eres capaz, vas a tener que instalar unrar desde el gestor de paquetes de tu distribución. Desde la terminal, tendrás que ejecutar el comando más oportuno para tu plataforma:

  • Ubuntu/Debian/derivados: sudo apt install unrar
  • Fedora/RHEL: sudo dnf install unrar-free
  • Arch o basadas en Arch: instala el paquete rar desde AUR.

Nota importante: si estás usando Debian, tendrás que activar los repositorios non-free, que no suelen venir activos por defecto. En Ubuntu, sí es posible instalarlos a la primera. Para Debian, también tienes como alternativa instalar unrar-free, aunque existen algunas diferencias en el funcionamiento que para algunos archivos RAR puede suponer que sea incapaz de extraerlo en primer lugar.

Una vez lo hayas instalado, ¿cómo se extrae un archivo RAR? Desde la misma terminal, deberás irte a la carpeta en la que está tu archivo RAR usando el comando cd, por ejemplo: cd /home/usuario/Descargas. A continuación, deberás utilizar el comando unrar con la opción x, que quiere decir extraer, y darle el nombre del archivo. Aquí un ejemplo completo:

# Me voy a la carpeta donde está mi archivo:
~ $ cd Descargas


# Ahora extraigo mi archivo RAR
~/Descargas $ unrar x Documentacion.rar
UNRAR 5.61 beta 1 freeware     Copyright (C) 1993-2018 Alexander Roshal
Extracting from Documentacion.rar

Extracting   Documento1.pdf
Extracting   Documento2.pdf
Extracting   Documento3.pdf
Extracting   Documento4.pdf
All OK


# Listo, ya están ahí mis archivos extraídos
~/Descargas $ ls
Documentacion.rar  Documento1.pdf  Documento2.pdf
Documento3.pdf     Documento4.pdf