Wiki Texto-Plano 2021-04-10T23:56:28-04:00 wiki.texto-plano.xyz Cómo enviar commits en forma de parches con git send-email y git format-patch 2021-04-10T00:00:00-04:00 wiki.texto-plano.xyz/2021/04/10/git-send-email-y-git-format-patch <p>A veces queremos incluir cambios que hicimos en nuestro repositorio, sea local o remoto, a otro repositorio de otra persona. Esto se puede hacer eligiendo los commits que contienen estos cambios y convertirlos en parches. Estos son simplemente archivos que diferencian un archivo de otro, línea por línea. Un parche puede enviarse por cualquier medio electrónico, y el autor de otro repositorio puede aplicar dicho parche a su propio repositorio. Esta es una guía muy simple para crear y enviar estos parches.</p> <p>En tu repositorio, haz las modificaciones y commits que vayas a enviar como parches. Pueden ser tantos como requieras.</p> <p>Luego, configura las variables necesarias de send-email:</p> <pre><code>git config user.name &lt;usuario&gt; # Nombre del autor del commit git config user.email &lt;usuario&gt;@texto-plano.xyz # Email del autor git config sendemail.from "Usuario &lt;usuario@texto-plano.xyz&gt;" # Formato "From" para el correo git config smtpuser &lt;usuario&gt; # Usuario en el servidor SMTP git config smtpserver texto-plano.xyz # Servidor SMTP git config smtpserverport 587 # Puerto del servidor git config sendemail.smtpencryption tls # Encriptación TLS para el servidor git config sendemailsuppresscc self # Recomendable, evita enviarte el parche a ti mismo </code></pre> <p>Se pedirá la contraseña del servidor en cada instancia, salvo que se especifique la variable <code>sendemail.smtppassword</code> (inseguro).</p> <p>Luego, envía los commits que elijas con git send-email. En este caso, ‘-1’ elige el último commit hecho desde HEAD. Es necesario especificar a quién enviarle los parches con ‘–to’.</p> <pre><code>git send-email -1 --to="Destinatario &lt;destinatario@ejemplo.com&gt;" </code></pre> <p>Si todo salió bien, el destinatario debería tener todos los parches que elegiste en su casilla de correo.</p> <p>Para crear un archivo .patch individual, se usa git format-patch. De nuevo, ‘-1’, por ejemplo, elige el último commit. Con ‘-o’ se elige el directorio en el que van a quedar los parches.</p> <pre><code>git format-patch -1 -o /home/&lt;usuario&gt; </code></pre> <p>Esta herramienta es útil por si se necesitan enviar los parches por otro programa de manera adjunta. También puede generarse el parche para usarlo de argumento con send-email.</p> <p>Más información (en inglés):</p> <ul> <li><a href="https://git-send-email.io/">Learn to use email with git!</a></li> <li><a href="https://www.freedesktop.org/wiki/Software/PulseAudio/HowToUseGitSendEmail/">How to Use git send-email</a></li> <li><a href="https://git-scm.com/docs/git-send-email">Manpage de git send-email</a></li> <li><a href="https://git-scm.com/docs/git-format-patch">Manpage de git format-patch</a></li> </ul> Aprende a usar la terminal 2021-03-24T21:52:00-03:00 wiki.texto-plano.xyz/2021/03/24/aprende-a-usar-la-terminal <h2 id="ejercicios">Ejercicios</h2> <p>¡Recibe una cordial bienvenida!</p> <p>Texto-plano.xyz es una comunidad de cómputo público en castellano. Sus miembros hacen uso a distancia de una computadora muy pequeña, provista del sistema operativo OpenBSD, similar a UNIX.</p> <p>Debes operar este entorno por medio de una <em>Interfaz de Línea de Comandos (CLI)</em>. Esto significa que normalmente teclearás tus órdenes en lugar de manejar aplicaciones gráficas.</p> <p>Si nunca has usado una <em>CLI</em>, no hay problema. Estos ejercicios sencillos y explicados, te acompañarán en tu aprendizaje de los rudimentos básicos para hacer la mayoría de los trabajos que desees.</p> <h3 id="la-shell-o-intérprete-de-comandos">La Shell o “Intérprete de Comandos”</h3> <p>No bien accedas remotamente con tu terminal al entorno texto-plano.xyz, se te mostrará un mensaje de bienvenida con instrucciones simples, ¡y ya estarás listo para operar!.</p> <p>Para ello usarás el “intérprete de órdenes”, o en la jerga, una <em>shell</em>.</p> <p>Esta shell es un programa capaz reaccionar a las instrucciones que le proporcionas, llamadas “órdenes” o “comandos”. La shell también muestra en tu pantalla una señal llamada <em>prompt</em>, que demuestra que el sistema está a tu disposición.</p> <p>El prompt puede aparecer de la siguiente manera:</p> <pre>fulano@texto-plano.xyz:~$</pre> <p>(Esto significa que eres el usuario “fulano”, en el entorno “texto-plano.xyz”. El signo $ indica el final del prompt).</p> <h3 id="ejercicio-1-comandos-básicos">Ejercicio 1: Comandos básicos</h3> <h4 id="quién-soy-cómo-me-llamo">¿Quién soy? ¿Cómo me llamo?</h4> <p>Prueba introducir tu primer órden para practicar.</p> <p>Nota: Los comandos que debes utilizar se indican en <strong>negrita</strong>. Puedes teclearlos o “copiar y pegarlos” en tu terminal.</p> <p>Teclea en la terminal el comando:</p> <p><strong>whoami</strong></p> <p>…y presiona la <strong>tecla Intro</strong> para enviar la órden. Se transmitirá este comando al intérprete de órdenes remoto, este lo interpretará, cumplirá y devolverá el resultado en tu terminal. Como consecuencia aparecerá en tu pantalla una nueva línea con tu <em>nombre de usuario</em>.</p> <p>¡Felicitaciones! Ahora sabes cómo te llamas. Serás conocido en nuestro entorno con este nombre de usuario, aunque en estos ejercicios usaremos el nombre de usuario “fulano” a título ilustrativo</p> <p>. :)</p> <p>Texto-plano es un sistema de cómputo multiusuario y público. Puedes saber quién más está conectado al centro de cómputo en este preciso momento, introduciendo otra orden:</p> <p><strong>w</strong></p> <p>¡No olvides presionar la <strong>tecla Intro</strong>! El sistema podría indicar qué usuarios están conectados, (columna <em>USER</em>) y qué están haciendo (columna <em>WHAT</em>).</p> <pre> 6:01PM up 51 days, 17:56, 8 users, load averages: 0.02, 0.07, 0.07 USER TTY FROM LOGIN@ IDLE WHAT mengano p0 32.43.69.74 Tue04AM 1day -bash sultano pg 120.12.199.47 3:30PM 2:30 -bash fulano 130.123.10.90 9:48AM 0 w mengana po 124.24.55.11 5:01PM 0 wordgrinder </pre> <p>De los errores, se aprende. Intenta cometer un error a propósito para aprender; en lugar de utilizar el comando w (con minúscula), introdúce el comando <strong>W</strong> (con mayuúscula):</p> <p><strong>W</strong></p> <p>El sistema podría indicarnos:</p> <pre> &gt; bash: comando no encontrado: W </pre> <p>Esto significa que <strong>los entornos similares a UNIX son sensibles al uso incorrecto de las mayúsculas o minúsculas</strong>. No es lo mismo <em>w</em> (un comando existente y válido) que <em>W</em> (un comando inexistente). Procura ser cuidadoso con el uso de mayúsculas y minúsculas en los nombres de los comandos, así también como los ficheros, y muy especialmnente las contraseñas.</p> <h2 id="directorios-y-archivos">Directorios y archivos</h2> <p>Texto-plano.xyz se basa en un <em>sistema de archivado</em> formado por una estructura de directorios. Deberás conocer su funcionamiento básico para ser efectivo, y a ello dedicaremos los siguientes ejercicios.</p> <p>La estructura de directorios tiene forma de árbol. En su base se encuentra un directorio maestro llamado “raíz”. De su tronco, se desprenden varias “ramas” (directorios). A su vez estos directorios pueden contener múltiples ramas más pequeñas (subdirectorios).</p> <p>Cada directorio puede contener tanto otros directorios como también archivos.</p> <p>Para conocer en qué directorio te encuentras en cualquier momento, ingresa el comando:</p> <p><strong>pwd</strong></p> <p>Por ejemplo, ahora podrías encontrarte en tu directorio de usuario:</p> <pre>/home/fulano</pre> <h4 id="directorio-home">Directorio /home</h4> <p>El directorio <em>/home</em> contiene los directorios de todos usuarios de texto-plano.xyz, incluyendo el tuyo propio, nomenclado según tu propio nombre de usuario.</p> <p>El directorio de usuario (por ejemplo <em>/home/fulano</em> ) es el espacio de disco que los miembros disponen dentro de texto-plano.xyz. Tu directorio de usuario puede abreviarse con el caracter de tilde “<strong>~</strong>”.</p> <blockquote> <p>(Nota: El tilde puedes escribirlo presionando <strong>AltGr+4</strong> en los teclados de distribución española).</p> </blockquote> <h3 id="ejercicio-2-listar-el-contenido-de-directorios-con-ls">Ejercicio 2: Listar el contenido de directorios con ls</h3> <p>Comprueba el contenido de tu directorio donde estás localizado en este momento. Para ello ingresa:</p> <p><strong>ls</strong></p> <p>El sistema te mostrará un listado con el contenido del directorio donde estés localizado. Si estás en tu directorio <em>/home/fulano</em> podría indicar un contenido que incluya esto:</p> <pre> &gt; MailDir/ public_html/ </pre> <p>Procede a listar ahora el contenido del directorio <em>/home</em>, el cual se utiliza para almacenar los directorios de los usuarios de texto-plano.xyz. Podrás hacerlo específicandolo como un sufijo al comando ls, de esta manera:</p> <p><strong>ls /home</strong></p> <blockquote> <p>Nota: Ten en cuenta que si tipeas el comando <strong>ls home</strong> en lugar de <strong>ls /home</strong>, el intérprete considerará que le estás ordenando listar <em>un archivo</em> llamado home, y no el contenido del <em>directorio</em> /home. Recuerda, la / especifica al intérprete de comandos que el pedido es un directorio, y que se encuentra en el directorio raiz de la estructura de directorios.</p> </blockquote> <p>También podrás listar el contenido del directorio raíz del sistema, la cual es representado por la <em>/</em>.</p> <p>Introduce el comando:</p> <p><strong>ls /</strong></p> <p>…y el sistema informará ahora el contenido general del directorio raíz.</p> <pre>altroot/ harfbuzz-2.7.2_writes_to_HOME/ at-spi2-core-2.36.1_writes_to_HOME/ home/ atk-2.36.0_writes_to_HOME/ lost+found/ bin/ mnt/ boot pango-1.46.2_writes_to_HOME/ bsd* pub/ bsd.booted* root/ bsd.rd sbin/ bsd.sp strfile* dev/ sys@ etc/ tmp/ gdk-pixbuf-2.40.0_writes_to_HOME/ usr/ gobject-introspection-1.64.1_writes_to_HOME/ var/</pre> <blockquote> <p>Nota: Ten presente que estas “ramas” o directorios del sistema contienen distintos aspectos organizativos del mismo. El administrador de texto-plano.xyz suele moverse en estos directorios.</p> </blockquote> <h3 id="ejercicio-3-cambiar-de-directorio-cd">Ejercicio 3: Cambiar de Directorio: cd</h3> <p>Cambiarás tu posición en la estructura de directorios a fin de trabajar en un directorio específico. Sólo puedes estar posicionado en un directorio a la vez.</p> <p>Para cambiar de directorio usa el comando <strong>cd</strong> seguido del nombre del directorio al que te deseas desplazar.</p> <p>Cambia tu localización al directorio <em>/usr</em>:</p> <p><strong>cd /usr</strong></p> <p>Este directorio de sistema llamado <em>/usr</em> contiene una serie de aplicaciones de usuario que utiliza el administrador del sistema. Puedes listar su contenido ahora con <strong>ls</strong>.</p> <p>Puedes volver a tu directorio individual <em>/home/fulano</em> mediante la abreviatura <strong>~</strong>. Esto es muy conveniente:</p> <p><strong>cd ~</strong></p> <p>¡Genial! Has aprendido que la ruta <em>/home/usuario</em> es tu propio directorio de usuario, y que puedes volver a ella rápidamente mediante el comando <strong>cd ~</strong>. El símbolo del tilde <strong>~</strong> es importante pues te avita tener que escribir la ruta <em>/home/usuario</em>.</p> <h3 id="ejercicio-4-crear-directorios-con-mkdir">Ejercicio 4: Crear Directorios con mkdir</h3> <p>Un directorio puede contener muchos archivos diferentes en su interior, y te permitirá organizar mejor tu entorno. Sólo puedes crear directorios dentro de tu directorio <em>/home</em> personal.</p> <p>Puedes crear un directorio usando el comando <strong>mkdir</strong>, seguido por el nombre del directorio que quieres crear.</p> <p>En este ejercicio, crearás un único directorio de trabajo llamado <em>temporal</em>, el cual estará localizado dentro de tu directorio /home de usuario (“~”). Puedes hacerlo introduciendo el comando:</p> <p><strong>mkdir ~/temporal</strong></p> <p>Los comandos UNIX te permiten ahorrar tiempo usando múltiples directorios o archivos.</p> <p>Por ejemplo, crea tres subdirectorios de práctica a la vez localizados dentro del directorio ~/temporal. A tal fin se separan las “ramas” de la ruta mediante la barra /. Utiliza entonces el comando:</p> <p><strong>mkdir ~/temporal/cartas ~/temporal/cuentos ~/temporal/poemas</strong></p> <h4 id="tutoral-desplazarnos-en-la-estructura">Tutoral: Desplazarnos en la estructura.</h4> <p>En este caso, cambia tu posición al directorio llamado “temporal” que creamos dentro de nuestro directorio de usuario.</p> <p><strong>cd ~/temporal/</strong></p> <p>Podrás comprobar que te encuentras dentro del directorio temporal ingresando nuevamente el comando <strong>pwd</strong>.</p> <pre>/home/fulano/temporal</pre> <p>Muchas shells también indican el directorio actual en el mismo prompt, lo que permite saber en todo momento en que rama del árbol de directorio estamos localizaados, y suelen hacer innecesario utilizar el comando pwd. Por ejemplo, podría indicarnos:</p> <pre>**/home/usuario/temporal**</pre> <p>…o bien:</p> <pre>~/temporal/</pre> <p>Al pedir un listado del contenido del directorio con <strong>ls</strong>, le sistema presentará el contenido del directorio donde estás asentado. Si estás en el directorio <em>~/temporal/</em>, podría indicarte:</p> <pre>cartas/ cuentos/ poemas/</pre> <p>Posicionado en el directorio ~/temporal, ilsta ahora el contenido de tu directorio de usuario <em>/home/fulano</em>. Para ello puedes usar la abreviatura ~.</p> <p><strong>ls ~</strong></p> <p>…y el sistema te podría presentar ahora:</p> <pre>MailDir/ public_html/ temporal/</pre> <p>Para retroceder un nivel en el árbol de directorios, se usa el comando **cd .. **</p> <p>Por lo tanto, si estabas en /home/fulano/temporal e ingresas **cd .. **, serás transportado a /home/fulano.</p> <p>¡Podrás ahora elegir qué te conviene mas: si listar directorios o moverte a ellos, o moverte a los directorios para luego listarlos. Ambas formas de trabajar son válidas.</p> <p>Por ejemplo, asbiendo que el directorio temporal está dentro de tu /home, sin importar cual sea tu directorio actual, siempre puedes listarlo con:</p> <p><strong>ls ~/temporal</strong></p> <p>O bien podrías cambiar tu posicionamiento actual a ~/temporal y luego listarlo:</p> <p><strong>cd ~/temporal</strong></p> <p><strong>ls</strong></p> <p>Ya has aprendido los rudimentos de los directorios, cómo ingresar a ellos y cómo moverte en el árbol de directorios.</p> <h3 id="ejercicio-5-crear-archivos-con-touch">Ejercicio 5: Crear archivos con touch</h3> <p>Cada archivo en el sistema tiene un nombre, y opcionalmente puede tener una extensión descriptiva.</p> <p>Debes tener en cuenta una regla fundamental: no pueden existir dos archivos con el mismo nombre dentro el mismo directorio.</p> <p>Dentro de tu directorio <em>/temporal</em>, crea cinco archivos de prueba llamados <em>prueba1.txt</em>, <em>prueba2.txt</em>, <em>prueba3.txt prueba4.txt</em> y <em>prueba5.txt</em>.</p> <p>Una forma posible pero ineficiente sería ordenar:</p> <p><strong>touch /home/usuario/temporal/prueba1.txt</strong></p> <p>…y repetir el proceso hasta el archivo <em>prueba5.txt</em>.</p> <p>Pero escribir eso es tedioso. Simplemente usa <strong>cd</strong> para cambiar al directorio temporal:</p> <p><strong>cd ~/temporal/</strong></p> <p>…y a continuación crea los cuatro archivos que faltan, de una sola vez, con el comando:</p> <p><strong>touch prueba2.txt prueba3.txt prueba4.txt prueba5.txt</strong></p> <p>Como ves, si estás localizado dentro de un directorio, no es necesario escribir toda la ruta.</p> <p>Ten en cuenta que si ahora introduces el comando <strong>ls</strong>, recibirás un listado del directorio donde te encuentras (~/termporal), informando el contenido:</p> <pre>cartas/ poemas/ prueba2.txt prueba4.txt cuentos/ prueba1.txt prueba3.txt prueba5.txt</pre> <h3 id="ejercicio-6-copiar-con-cp">Ejercicio 6: Copiar con cp</h3> <p>En ocasiones puede ser útil copiar un archivo o directorio (tanto aislado como completo) en otro lugar.</p> <p>Podremos realizar copias de un archivo con el comando <strong>cp</strong>.</p> <p>Supongamos que queremos copiar el archivo llamado prueba5.txt en otro archivo llamado prueba5.txt.copia, usamos:</p> <p><strong>cp prueba5.txt prueba5.txt.copia</strong></p> <p>Copia ahora el fichero <em>prueba4.txt</em> dentro del directorio <em>poemas/</em>. Puedes usar el comando:</p> <p><strong>cp prueba4.txt poemas/corazon.txt</strong></p> <p>También puedes copiar directorios:</p> <p><strong>cp poemas/ poemas_copiados/</strong></p> <p>Y podrás copiar directorios con sus contenidos, usando la opción <strong>-r</strong>:</p> <p><strong>cp -r cartas/ cartas_copiadas/</strong></p> <h3 id="ejercicio-7-mover-o-renombrar-con-mv">Ejercicio 7: Mover o renombrar con mv</h3> <p>En un entorno ideal, los archivos o directorios estarían donde los queremos y necesitamos. Pero esto no siempre es así.</p> <p>Los sistemas UNIX utilizan el comando <strong>mv</strong> para mover o renombrar un archivo. Se usa la sintáxis:</p> <p><strong>mv origen destino</strong></p> <p>Por ejemplo renombra el archivo prueba1.txt para que se llame <em>carta_abuelo.txt</em> mediante el comando:</p> <p><strong>mv prueba1.txt carta_abuelo.txt</strong></p> <p>También puedes usar el comando para cambiar de directorio el fichero. Por ejemplo:</p> <p><strong>mv carta_abuelo.txt cartas/</strong></p> <p>Ten en cuenta que la / es importante en UNIX. Indica que debes mover el archivo “carta_abuelo.txt” al interior de un directorio llamado cartas/.</p> <p>Pero si olvidas la / en el directorio cartas/ y sólo indicas</p> <p><strong>mv carta_abuelo.txt cartas</strong></p> <p>…pues el intérprete buscará un archivo llamado “carta_abuelo.txt” y le cambiará el nombre a “cartas”. ¡Recuerda!, la / al final de un nombre indica la diferencia entre un directorio y un archivo.</p> <p>Renombra ahora el archivo prueba3.txt a cenicienta.txt y muévelo al directorio cuentos/ usando un único comando:</p> <p><strong>mv prueba3.txt cuentos/cenicienta.txt</strong></p> <h3 id="ejercicio-8-borrar-con-rm">Ejercicio 8: Borrar con rm</h3> <p>Si no necesitas un archivo o directorio, puedes borrarlo. Esto ahorrará recursos de cómputo en el sistema, que podremos disfrutar entre todos.</p> <p>Puedes borrar archivos dentro de un directorio mediante el comando <strong>rm</strong> (“remover”).</p> <p>En este tutorial, finalizaremos eliminando los archivos y directorios ya creados. Desplázate al directorio <em>~/temporal</em> y borra el archivo <em>prueba5.txt.copia</em> con:</p> <p><strong>cd ~/temporal</strong></p> <p><strong>rm prueba5.txt.copia</strong></p> <p>Podrías repetir esto para borrar el resto de los archivos, pero podrías también usar el comodín <strong>?</strong> para indicar “todo tipo de archivo que incie con prueba, contenga un caracter cualquiera, y termine con .txt”. Esto se hace de la siguiente manera:</p> <p><strong>rm prueba?.txt</strong></p> <p><em>rm</em> sólo puede borrar archivos. En caso de querer borrar un directorio, debes utilizar el modificador <strong>-r</strong>. Por ejemplo:</p> <p><strong>rm -r cuentos/</strong></p> <h2 id="conclusión">Conclusión</h2> <p>¡Felicitaciones! Ya conoces los rudimentos básicos de un sistema similar a UNIX.</p> <p>Si lo deseas, puedes borrar ahora el directorio <em>temporal/</em>:</p> <p><strong>rm -r ~/temporal</strong></p> <p>¡Vuelve a tu directorio <em>/home</em> con el comando <strong>cd ~</strong> y continúa disfrutando de texto-plano.xyz, el entorno minimalista!</p> Cómo configurar la confianza de las claves GPG. 2021-01-23T23:37:00-03:00 wiki.texto-plano.xyz/2021/01/23/como-configurar-la-confianza-de-las-claves-gnu-pg <p>El criptosistema de cifrado GNU PG se basa en la confianza de las claves públicas de terceros.</p> <p>Este nivel de confianza puede interrelacionarse con otros usuarios en servidores de cifrado, en caso de ser necesario, pero podremos hacerla efectiva por nosotros mismos. Para ello es recomendable denunciar un “nivel de confianza” en las claves de terceros que tengamos guardadas en nuestro llavero público (“public keyring”).</p> <p>Para ello activamos el criptosistema con:</p> <p><strong>gpg2 –edit-key pepita@texto-plano.xyz</strong></p> <p>El criptosistema indicará:</p> <pre><code>gpg (GnuPG) 2.2.23; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub rsa3072/ZZZZZZZZZZZZZZZZ creado: aaaa-mm-dd caduca: aaaa-mm-dd uso: SC confianza: desconocido validez: desconocido sub rsa3072/YYYYYYYYYYYYYYYY creado: aaaa-mm-dd caduca: aaaa-mm-dd uso: E [desconocida] (1). fulano &lt;pepita@texto-plano.xyz&gt; gpg&gt; </code></pre> <p>En el prompt gpg&gt; ingresamos el comando <strong>trust</strong>.</p> <p>Y ahora aparecerán los detalles de la llave y además el menú selector de confianza:</p> <pre><code>Por favor, decida su nivel de confianza en que este usuario verifique correctamente las claves de otros usuarios (mirando pasaportes, comprobando huellas dactilares en diferentes fuentes...) 1 = No lo sé o prefiero no decirlo 2 = NO tengo confianza 3 = Confío un poco 4 = Confío totalmente 5 = confío absolutamente m = volver al menú principal ¿Su decisión? </code></pre> <p>Debemos indicamos el número escogido. Por ejemplo, <strong>4</strong> podría indicar que hemos acordado con alguien que nos envíe la clave y esta persona lo ha hecho por medio electrónico. Mientras que 5 es que literalmente hemos visto a la persona requerida enviarnos la llave en nuestra presencia.</p> <p>Para salir del criptosistema, en el prompt gpg&gt; ingresamos la opción <strong>quit</strong>.</p> Cifrado de correo electronico con GPG y Mutt 2021-01-23T23:24:00-03:00 wiki.texto-plano.xyz/2021/01/23/cifrado-de-correo-electronico-con-gpg-y-mutt <p>Mutt es el editor de correo electrónico de texto-plano.xyz. Puede trabajar con encriptación PGP. El sistema PGP involucra un par de archivos de encriptación (llamados “llaves”). Uno es una llave privada, y la otra es una pública.</p> <h2 id="creación-de-clave-opcional">Creación de clave (opcional)</h2> <p>Si no tuviésemos ya un par de llaves pública y privada, la creamos con el comando:</p> <p><strong>gpg2 –gen-key</strong></p> <p>Normalmente el criptosistema GPG nos solicitará nuestra cuenta de correo electrónico, y también nos solicitará ingresar una contraseña para el criptosistema. Esta se utilizará para cifrar y descifrar correos. <strong>Es importante conservar esta contraseña de criptosistema en un lugar seguro</strong>.</p> <p>Una vez creada el par de llaves, crearemos una copia de nuestra llave pública a fin de poder distribuírsela a nuestros contactos.</p> <p><strong>gpg2 –armor –output usuario_tp_publica.asc –export usuario@texto-plano.xyz</strong></p> <p>Ahora podremos enviar esta copia de la llave pública usuario_tp_publica.asc por correo electrónico sin cifrar, subirla a un gopher o www. En fin, compartirla con quien queramos.</p> <p>Hecho esto, podremos configurar Mutt.</p> <h2 id="configuración-de-mutt-para-que-funcione-con-encriptación-pgp">Configuración de Mutt para que funcione con encriptación PGP</h2> <p>Consiste en agregar una configuración especial al fichero <em>~/.muttrc</em> de configuración.</p> <p>Para mayor facilidad podrán descargar mi propio fichero de configuración de mutt (comentado) con:</p> <p><strong>cd ~</strong></p> <p><strong>wget https://texto-plano.xyz/~peron/ftp_pub/muttrc</strong></p> <p><strong>mv muttrc ~/.muttrc</strong></p> <h2 id="enviar-un-mensaje-de-correo-encriptado-con-mutt">Enviar un mensaje de correo encriptado con Mutt</h2> <p>Entramos a Mutt y creamos un nuevo mensaje presionando <strong>m</strong>. Nos solicitará los destinatarios (podemos indicar varios separándolos con coma). También solicitará un Asunto.</p> <p>Una vez que ingresemos estos, nos presentará el editor <em>GNU Nano</em>. Escribimos el mensaje lo guardamos con <strong>Ctrl+o</strong> y salimos con <strong>Ctrl+x</strong>.</p> <p>Antes de enviar el correo sin cifrar (lo que normalmente se hace presionando <strong>tecla y</strong> en este momento) <strong>debemos cifrarlo</strong>. Presionamos la <strong>tecla p</strong> para activar las opciones de encriptación. Mutt nos preguntará si queremos cifrarlo, firmarlo o ambos. Para usar ambas opciones presionamos la <strong>tecla b</strong>.</p> <p>Si la llave carece de una validez definida significa que la misma <strong><a href="">no ha sido validada por terceros</a>, y sólo esta autofirmada</strong>. No es lo ideal, pero de momento, podremos aceptarla igual. Mutt mostrará este mensaje.</p> <p><em>ID has undefined validity. ¿Realmente quiere utilizar la llave? ([no]/sí):</em></p> <p>Es importante saber que de momento, por un error de traducción de Mutt, para usar la clave en lugar de presionar la tecla s como indica el programa, debemos presionar la <strong>tecla y</strong>(por “yes”).</p> <p>Ahora Mutt se interrumpirá y <strong>nos solicitará que ingresemos la contraseña del criptosistema GPG</strong>. Tendremos tres oportunidades para introducirla correctamente.</p> <p>Una vez encriptadio exitosamente, podremos enviarlo con la <strong>tecla y</strong>.</p> <p>Salimos del Mutt con la <strong>tecla q</strong>.</p> <hr /> <p>Aportado originalmente por ~peron en <a href="https://texto-plano.xyz/~peron/inst/mutt/mutt_gnupg.html">Encriptación GNUPG con Mutt </a></p> Uso de claves de cifrado con GPG 2021-01-23T23:03:00-03:00 wiki.texto-plano.xyz/2021/01/23/uso-de-claves-de-cifrado-con-gpg <p>La privacidad es un valor impostergable en un sistema de cómputo. Puedes aprender a cifrar mensajes de correo electrónico en el ambiente Texto-plano.</p> <p>Para ello debes utilizar el criptosistema <strong>GnuPG v2.</strong></p> <p>Este criptosistema ofrece un mecanismo de cifrado para mensajes de punto a punto. Cada punto (remitente y receptor) posee dos tipos de clave: una llamada <em>Clave Privada</em>, y otra que se combina con la anterior pero que debe compartirse con el resto de tus destinatarios de correo: la <em>Clave Pública</em>.</p> <p>En texto-plano, podrás utilizar el programa de correo electrónico <strong>Mutt</strong> para enviar y recibir correo electrónico convencional. Pero si adicionalmente utilizas el criptosistema, podrás asegurar el envío y recepción de correo cifrado y firmado digitalmente.</p> <p>Sigue este tutorial para poder usar el criptosistema.</p> <h2 id="crea-un-par-de-claves-pgp">Crea un par de claves PGP</h2> <p>En primer lugar genera el par de claves propias (privada y pública) necesarias. Ingresa el comando:</p> <p><strong>gpg2 –gen-key</strong></p> <p>Aparecerá en tu terminal el siguiente diálogo. Completa el nombre y la dirección del correo electrónico:</p> <pre><code>gpg (GnuPG) 2.2.23; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. Nombre y apellidos: **Fulano Mengano** Dirección de correo electrónico: **fulano@texto-plano.xyz** Ha seleccionado este ID de usuario: "Fulano Mengano" ¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir?**V** </code></pre> <p>\</p> <p>Si esta es la primera vez que utilizas el criptosistema en el entorno texto-plano, se te solicitará que ingreses ahora una contraseña de criptosistema (y confirmarla) a fin de proteger tu llavero (“Key-Ring”). Este keyring es el programa que permite controlar todas tus acciones de encriptación, de modo que toma nota de la misma y consérvala a resguardo. En cambio, si ya hubieses utilizado el criptosistema previamente, se te solicitará ingresar la contraseña del llavero.</p> <p>Una vez concluido se te informará:</p> <pre><code>gpg: clave XXXXXXXX marcada como de confianza absoluta gpg: certificado de revocación guardado como '/home/fulano/.gnupg/openpgp-revocs.d/xxxxxxxxxx.rev' gpg: clave pública y secreta creadas y firmadas. pub rsa3072 aaaa-mm-dd Huella de clave = zzzz zzzz zzzz zzzzz zzzz zzzz zzzz zzzz zzzz zzzz uid Fulano Mengano [fulano@texto-plano.xyz] sub rsa3072/ZZZZZZZZ aaaa-mm-dd </code></pre> <p>\</p> <h2 id="comparte-tu-clave-pública-pgp-con-terceros">Comparte tu clave pública PGP con terceros</h2> <p>Quienes deseen descifrar tu correo encriptado deben contar con tu clave pública. Para poder darle a futuros remitentes tu clave pública debes exportarla. Por ejemplo, utilizarías el comando:</p> <p><strong>gpg2 –armor –output fulano_tp_publica.asc –export fulano@texto-plano.xyz</strong></p> <p>Este ejemplo creará un archivo llamado fulano_tp_publica.asc. Este archivo podrá ser hecho público de la manera que desees, ya sea enviándolo adjunto por correo electrónico, ingresarlo a tu “finger” de Texto-plano, subirlo a tu www o gopherhole.</p> <p>\</p> <h2 id="agrega-a-tu-criptosistema-la-clave-pública-pgp-de-un-tercero">Agrega a tu criptosistema la Clave pública PGP de un tercero</h2> <p>Para poder enviarle correo electrónico cifrado a un tercero, deberás incorporar a tu critosistema la clave pública de dicha persona. La misma tendrá la misma forma que tu propia clave pública: es un archivo .asc, o eventualmente .gpg.</p> <p>Suponiendo que te hacen llegar por correo electrónico no cifrado la clave pública de el destinatario pepita@texto-plano.xyz, que consiste en un archivo de clave pública llamado pepita_tp.asc. La incorporarás a tu criptosistema con el comando:</p> <p><strong>gpg2 –import pepita_tp.asc</strong></p> <p>Sólo si la clave está intacta, el sistema la incorporará. En tal caso nos devolverá algo como:</p> <pre><code>gpg: key YYYYYY: Clave pública importada. gpg: número total procesada: 1 gpg: importada: 1 </code></pre> <p>\</p> <h2 id="revisar-y-validar-las-llaves-almacenadas-en-el-criptosistema">Revisar y validar las llaves almacenadas en el criptosistema</h2> <p>Podrás revisar las claves contenidas en tu criptosistema con el comando:</p> <p><strong>gpg2 –list-keys</strong></p> <p>y este informará algo como:</p> <pre><code>/home/usuario/.gnupg/pubring.gpg ------------------------------ pub 3072R/YYYYYYY aaaa-mm-dd uid Fulano Mengano sub 3072R/ZZZZZZ aaaa-mm-dd pub 2048R/3DE3f869 aaaa-mm-dd uid Pepita TP sub 2048R/C3CFF358 aaaa-mm-dd </code></pre> <p>\</p> <hr /> <p>Aportado originalmente por ~peron en <a href="https://texto-plano.xyz/~peron/inst/pgp/gnupg.html">Uso de correo cifrado con GNUPG</a></p> Cómo utilizar el repositorio de git en Texto-Plano 2021-01-22T22:50:00-03:00 wiki.texto-plano.xyz/2021/01/22/como-utilizar-el-repositorio-de-git-en-texto-plano <p>Hemos implementado un repositorio de git que puedes utilizar libremente para cualquier script, aplicación o cualquier material que necesite versionado que quieras compartir con nosotros y otras personas en internet. Este artículo no va a explicar el uso básico de GIT pero habrá otro manual de uso básico o puedes revisar otros en Internet.</p> <p>(EDIT 21/12/2020: Partimos de la base de que tienes un repositorio local listo para subir al sistema. Si no tienes un repositorio local, créalo)</p> <h2 id="cómo-utilizar-el-repositorio-remoto">Cómo utilizar el repositorio remoto</h2> <p>Lo primero es que debes crear un enlace simbólico a la carpeta de /var/www/cgit_repos/<USUARIO> de la siguiente manera:</USUARIO></p> <pre><code>ln -s /var/www/cgit_repos/$USER ~/public_repos </code></pre> <p>Para crear tu propio repositorio tienes que entrar ahora a ~/public_repos y crear un directorio terminado en .git:</p> <pre><code>mkdir mi_programa.git </code></pre> <p>Luego entra a él e inicializa el repositorio:</p> <pre><code>cd mi_programa.git &amp;&amp; git init --bare </code></pre> <p>Dentro de mi_programa.git hay un archivo que se llama config. Agrega lo siguiente:</p> <pre><code>[gitweb] owner = usuario &lt;usuario@texto-plano.xyz&gt; </code></pre> <p>Luego agrega un archivo que se llame “description” (puede ser con echo o editándolo por vim/nano):</p> <pre><code>echo "mi fabulosa aplicación que sirve para X cosa" &gt; description </code></pre> <p>Eso por el lado del servidor. Para que tu repositorio local reconozca este repo deberás añadir un repositorio remoto a tu sistema. Dependerá de si trabajas tu aplicación desde tu ~ en texto-plano o si lo haces desde tu PC local:</p> <p>Si estás en tu ~ de texto-plano.xyz:</p> <pre><code>git remote add texto-plano.xyz /home/&lt;USUARIO&gt;/public_repos/&lt;REPO&gt; </code></pre> <p>Si estás en tu pc local:</p> <pre><code>git remote add texto-plano.xyz &lt;USUARIO&gt;@texto-plano.xyz:public_repos/&lt;REPO&gt; </code></pre> <p>(emplea SSH para conectarse)</p> <p>Cuando necesites actualizar un cambio:</p> <pre><code>git push -u texto-plano.xyz master </code></pre> <p>(o el nombre que le hayas puesto a la rama principal)</p> <p>Tu repositorio debería aparecer en <a href="https://git.texto-plano.xyz">https://git.texto-plano.xyz</a></p> <p>(Tomado desde la <a href="https://wiki.tilde.institute">wiki de tilde.institute</a> cuyo sistema es análogo al nuestro)</p> Irssi como proxy 2021-01-22T22:46:00-03:00 wiki.texto-plano.xyz/2021/01/22/irssi-como-proxy <p>Irssi es uno de los clientes de IRC más apreciados, pero una alternativa que no todos conocen es que puedes utilizarlo en modo proxy si tienes acceso a una máquina conectada 24/7 y así mantener los registros de las conversaciones aunque no estés.</p> <p>Irssi tiene una herramienta poco y mal documentada llamada irssiproxy, pero su funcionamiento no es complicado. Primero vamos a suponer que tenemos unirssi configurado en el servidor y ya conectado a una red IRC con usuario. Esta configuración debe estar guardada para que irssi se conecte automáticamente a tu usuario al iniciarlo.</p> <h2 id="en-el-servidor">En el servidor</h2> <p>Lo primero es asegurarnos de estar conectados en las redes en Irssi y digitar:</p> <pre><code>/load proxy </code></pre> <p>(Esto lo puedes agregar a tu ~/.irssi/startup para que se ejecute siempre)</p> <p>Este procedimiento activa el proxy, sin embargo así tal cual no va a servirnos de nada. Debemos agregar una contraseña:</p> <pre><code>/SET irssiproxy_password contraseña </code></pre> <p>Donde contraseña es lo que tú quieras.</p> <p>Ahora debemos decirle a Irssi que enrute cada red que queramos usar a través de un puerto específico. Por ejemplo, Freenode va por un puerto, tilde.chat va por otro:</p> <pre><code>/SET irssiproxy_ports Freenode=7001 tilde=7002 </code></pre> <p>Otra opción es que le digamos a irssi que escuche por un solo puerto pero nos dé la opción de elegir:</p> <pre><code>/SET irssiproxy_ports ?=7000 </code></pre> <p>Finalmente tenemos que especificar a irssiproxy por qué dominio tiene que escuchar con irssiproxy_bind. En teoría esto no debería ser necesario y, de hecho, no aparece en la documentación que hemos visto pero en algunos casos ha sido necesario agregarlo. Puedes anotar la IP o bien el dominio.</p> <p>/SET irssiproxy_bind 127.0.0.1 (sólo disponible desde el mismo servidor)</p> <p>/SET irssiproxy_bind servidor.dominio</p> <p>Con estos cambios deberíamos tener un proxy complemente funcional. Irssiproxy es en la práctica una forma de usar irssi de manera remota, así que incluso si tienes el proxy remoto abierto puedes ver las ventanas siendo creadas.</p> <p>Finalmente con:</p> <pre><code>/irssiproxy </code></pre> <p>Puedes verificar toda la configuración guardada del servidor (ideal para saber si lo que digitamos fue correcto).</p> <pre><code>/irssiproxy status </code></pre> <p>Nos informa cuántos clientes están conectados.</p> <h2 id="cliente-irssi">Cliente Irssi</h2> <p>En el cliente tenemos que saber conectarnos también. Desde el Irssi local vamos a tener que agregar nuestro proxy como si fuese una red de IRC nueva.</p> <pre><code>/NETWORK ADD proxy </code></pre> <p>(el nombre puede ser el que quieras, aquí lo vamos a llamar proxy)</p> <p>Vamos a asociarle un servidor:</p> <pre><code>/SERVER ADD -auto -network proxy servidor.dominio 7001 CONTRASEÑA </code></pre> <p>La configuración de arriba nos serviría para conectarnos a Freenode si seguimos el ejemplo del principio.</p> <p>¿Y qué pasa si usamos la configuración con un puerto único? Es más fácil porque utilizamos menos recursos y un puerto, pero es un poco diferente:</p> <pre><code>/SERVER ADD -auto -network proxy servidor.dominio 7000 RED:CONTRASEÑA </code></pre> <p>Luego guardamos todo con un</p> <pre><code>/SAVE ALL </code></pre> <p>También podemos conectarnos directamente con un</p> <pre><code>/connect proxy 7001 CONTRASEÑA </code></pre> <hr /> <p>La documentación oficial está en https://irssi.org/documentation/startup/</p> <p>Un pequeño tutorial en inglés que nos ayudó https://michael.lustfield.net/linux/irssi-as-a-proxy</p> <p>Echarle un vistazo a un archivo de texto oculto en el repo de Irssi ayudó también https://github.com/irssi/irssi/blob/master/docs/proxy.txt</p> <p>Para cualquier pregunta o corrección admin arroba texto-plano.xyz</p> Recibir el correo fuera del servidor 2021-01-22T22:39:00-03:00 wiki.texto-plano.xyz/2021/01/22/recibir-el-correo-fuera-del-servidor <p>El correo de Texto Plano está pensado para verse dentro del sistema, como en la mayoría de tildes o sistemas compartidos y su uso preferente es para comunicarse con el administrador o bien con otros usuarios del sistema o sistemas similares. No obstante, a veces es necesario o mucho más cómodo consultar el correo de forma externa con un cliente en su propio equipo. Contrario a lo que se cree, esto es posible técnicamente y sólo debe configurar su cliente.</p> <p>–</p> <h2 id="imap">IMAP</h2> <p>Servidor: imap.texto-plano.xyz:143</p> <p>Nombre de usuario: usuario</p> <p>Seguridad de la conexión: STARTTLS</p> <p>Autenticación: Con contraseña</p> <h2 id="smtp">SMTP</h2> <p>Servidor texto-plano.xyz:587</p> <p>Seguridad de la conexión: STARTTLS</p> <p>Nombre de usuario: usuario</p> <p>Autenticación: Con contraseña</p> <p>–</p> <p>Es importante señalar que es posible que usted no tenga una contraseña en el sistema ya que no es necesaria para conectarse por SSH y el sistema tampoco las crea. <strong>Si no puede crear su contraseña usted mismo/a debe comunicarse con admin arroba texto-plano.xyz y solicitarla</strong> utilizando la misma cuenta de correo donde también será enviada la contraseña.</p> <p>Una vez entregada la contraseña puede cambiarla inmediatamente con el comando <code>passwd</code>. Solicito encarecidamente utilizar un sistema de almacenamiento de contraseñas como keepass o incluso pass (disponible en este mismo sistema) para no perder su contraseña del correo externo.</p> <p>Editado por ~ffuentes el 22-11-2020</p> Juegos en texto-plano.xyz 2021-01-22T22:21:00-03:00 wiki.texto-plano.xyz/2021/01/22/juegos-en-texto-plano-xyz <p>Una lista de los juegos más interesantes disponibles en el sistema. Hay más en /usr/games/ (si quieren una reseña de alguno de ellos o agregar otro juego al sistema envía un correo a admin en texto-plano.xyz).</p> <h2 id="dopewars">Dopewars</h2> <p>Dopewars es un clásico de la consola en los clones de UNIX. En este caso es un juego de estrategia por turnos en que actúas como un nuevo microtraficante que busca ganar la mayor cantidad de dinero posible. La versión original transcurre en Nueva York pero la internacionalizada que está instalada en Texto Plano transcurre en Madrid y tiene un vocabulario muy español.</p> <h2 id="nethack">Nethack</h2> <p>El clásico ‘roguelike’ o mejor dicho, un juego de rol de calabozos muy conocido y muy antiguo. Este juego está instalado en su versión estándar que no está internacionalizada (esto es, diseñada para ser traducida fácilmente) pero existe una versión traducida llamada Spanish Nethack que fue creada por Ray Chanson para aprender español. http://spanish-nethack.sourceforge.net/spanish/index.html</p> <p>Este es un manual de NetHack en español en el viejo Geocities http://www.geocities.ws/javis_mexico/nh/NHManual/intro.html</p> <h2 id="vitetris">Vitetris</h2> <p>En realidad hay muchas variantes del viejo tetris, de hecho, los juegos de BSD traen una versión (/usr/games/tetris). Sin embargo, vitetris es una versión colorida, con puntajes, que se puede jugar en parejas también y que también permite jugar en línea. Es una variante del tetris muy atractiva y es quizás el juego más jugado de texto-plano.xyz</p> <h2 id="2048">2048</h2> <p>Este juego es más reciente, lo creó un italiano llamado Gabrielle Cirulli y la versión que alojo aquí es una que descubrí gracias a ascii.town. El código del juego viene de https://github.com/mevdschee/2048.c y es muy fácil de compilar.</p> <h2 id="csokoban">Csokoban</h2> <p>Reproduce el puzzle sokoban y permite guardar la partida y registrar algunas estadísticas</p> <p>Editado por última vez por ~ffuentes el 03-01-2021</p> Gab: Un chat asíncrono 2021-01-22T22:16:00-03:00 wiki.texto-plano.xyz/2021/01/22/gab-un-chat-asincrono <p>Es un sencillo programa de chat escrito por ~sloum de colorfield.space y que depende de un archivo de texto. Es muy sencillo y sólo tiene dos opciones más la ayuda.</p> <p>gab: Obtiene los últimos 5 mensajes</p> <p>gab -m (–msg) “mensaje”: Esta opción te permite enviar un mensaje.</p> <p>gab -l (–log) #: Esta opción te permite ver la cantidad de mensajes que gustes donde # es un número.</p> <hr /> <p>Cualquier consulta sobre texto-plano.xyz a admin arroba texto-plano.xyz</p> <p>La página de GAB es https://tildegit.org/sloum/gab</p> Cambiar el intérprete de comandos 2021-01-22T22:07:00-03:00 wiki.texto-plano.xyz/2021/01/22/cambiar-el-interprete-de-comandos <p>OpenBSD por defecto utiliza ksh (Korn Shell) que es un intérprete de comandos distinto al que se suele usar en Linux. No todo el mundo se siente cómod o con ella. Para cambiarlo no es indispensable la asistencia del administrador. Basta con que hagas lo siguiente:</p> <p>Primero digita: cat /etc/shells. Aparecerá en pantalla un archivo con una lista de intérpretes:</p> <pre><code># $OpenBSD: shells,v 1.8 2009/02/14 17:06:40 sobrado Exp $ # # list of acceptable shells for chpass(1). # ftpd(8) will not allow users to connect who are not using # one of these shells, unless the user is listed in /etc/ftpchroot. /bin/sh /bin/csh /bin/ksh /usr/local/bin/git-shell /usr/local/bin/bash /usr/local/bin/fish </code></pre> <p>Luego digita “chpass” y el sistema te llevará a editar un archivo de texto donde debes escribir la ruta del intérprete que prefieras (de la lista de /etc/shells, de lo contrario no va a funcionar). Guarda, cierra tu sesión y vuelve a entrar.</p> <p>Si tienes algún problema con esto avisa a admin arroba texto-plano.xyz.</p> Tutorial basico de la consola 2021-01-22T21:43:00-03:00 wiki.texto-plano.xyz/2021/01/22/tutorial-basico-de-la-consola <p>En este tutorial explicaremos brevemente algunas operaciones básicas de archivado y uso del intérprete de comandos, empleando los siguientes comandos:</p> <ul> <li>touch – crear un fichero</li> <li>pwd – imprimir el directorio de trabajo actual</li> <li>ls – listar ficheros en el directorio actual</li> <li>cp – copiar un fichero</li> <li>mv – mover un fichero</li> <li>rm – remueve un fichero</li> <li>file – examina el tipo de fichero</li> <li>less – lee un fichero</li> <li>mkdir – crea un directorio</li> <li>cd – cambia de directorio</li> <li>rmdir – remueve un directorio</li> <li>clear – borra la pantalla</li> </ul> <p>Por favor tenga en cuenta que cada uno de los comandos indicados arriba cuentan con una página de manual (man-page) que describirá en profundidad las posibilidades completas de cada comando. En este tutorial, simplemente le daremos una reseña breve, suficiente para hacer funcionar lo necesario desde la línea de comandos. Para mayor información sobre las man-pages, vea Buscar Ayuda desde dentro del intérprete o dirijase a http://man.openbsd.org/.</p> <h2 id="opciones-de-comando-nombrado-de-ficheros">Opciones de Comando Nombrado de ficheros</h2> <h3 id="opciones-de-comando">Opciones de Comando</h3> <p>Todos los comandos arriba indicados y muchos de los comandos que descubrirá y usará en el intérprete pueden ser modificados a través del uso de diferentes opciones.</p> <p>Lea las man-pages para encontrar detalles de las opciones disponibles para cada comando. Las opciones normalmente responden a la sintaxis “ls -l”. Esto significa que se tipea el comando, se hace un espacio una vez, se tipea el guión y la letra de la opción que necesita utilizar.</p> <h3 id="nombrado-de-ficheros">Nombrado de ficheros.</h3> <p>Es de buena forma nombrar un archivo o directorio sin espacios libres en el nombre. Un archivo como “mi diario.txt” podría ser mas dificultoso para manejarse en el sistema que el mismo fichero nombrado “mi_diario.txt”. Esto se debe a que el intérprete intepreta mi diario.txt como dos archivos separados, “mi” y “diario.txt”. Si se encuentra ante un fichero con espacios vacíos en el nombre, puede emplear los siguientes métodos para manipularlo:</p> <p>Use tildes o comillas para designar el fichero:</p> <pre><code>rm "mi fichero.txt" </code></pre> <p>(para borrarlo)</p> <pre><code>cp 'mi fichero.txt' mi_fichero.txt (para copiarlo con un nuevo nombre) </code></pre> <p>Use una barra invertida donde hay un espacio vacío:</p> <pre><code>mv mifichero.txt mi_fichero.txt </code></pre> <p>(para renombrarlo)</p> <pre><code>cd respaldos/páginas\ de\ texto/ </code></pre> <p>(para cambiar a un directorio)</p> <p>Use autocompletado con Tab: Muchos intérprete cuentan con autocompletado con Tab.</p> <p>Esto significa que si ingresa los primeros dos o tres caracteres de un nombre de fichero y presiona la opción Tab, a no ser que tenga múltiples ficheros con nombres similares, su intérprete debería ser capaz de autocompletar el nombre por usted. Nota: si no está en el mismo directorio que el fichero que desea autocompletar, necesitará proveerle al intérprete la ruta al mismo, la cual puede autocompletarse mediante Tab de ser necesario.</p> <p>También, cuando nombre un fichero enpleando dos o más palabras, la elección más segura es usar el guión bajo, el guión, y el punto. Por ejemplo:</p> <ul> <li>mi_fichero.txt</li> <li>mi-fichero.txt</li> <li>mi.fichero.txt</li> <li>mifichero.txt</li> </ul> <p>Al emplear otros símbolos, como la potencia (ampersand) podría causar problemas porque algunos de estos símbolos podrían tener otros significados para el uso del intérprete. Como siempre, para más información diríjase a las man-pages del intérprete de su preferencia.</p> <h2 id="comandos">Comandos</h2> <p>Nota: en los ejempos a continuación, el signo porcentaje se emplea para indicar el intérprete de comandos, y no debe ser tipeado o ingresado.</p> <h3 id="touch-y-pwd--crea-un-fichero-e-imprime-el-directorio-de-trabajo">touch y pwd : Crea un fichero e imprime el directorio de trabajo.</h3> <p>Para crear un fichero sin invocar un editor de texto u otro programa, simplemente debe “tocarlo”. Por ejemplo, para crear un fichero llamado naranja.txt, en el intérprete de comandos ingrese</p> <pre><code>touch naranja.txt </code></pre> <p>¡Nada más que eso! Para ver el fichero que usted ha creado, tiene la capacidad de listar el fichero y los directorios contenidos en el directorio de trabajo actual. Primero, vea en qué directorio se encuentra. Por defecto, una vez creado un enlace SSH o Telnet hacia su cuenta de intérprete, usted se encontrará en su directorio Home de usuario. Para confirmarlo, en el intérprete de comandos ingrese:</p> <pre><code>pwd </code></pre> <p>Si su nombre de usuario es Marinette, tal vez vea algo como esto:</p> <p>/home/marinette</p> <h3 id="ls-lista-ficheros-en-su-directorio-actual">ls: lista ficheros en su directorio actual</h3> <p>Ahora listemos los ficheros que se encuentran en nuestro directorio actual. Tipeamos:</p> <pre><code>ls </code></pre> <p>Si hemos seguido el tutorial y creado un fichero llamado naranja.txt con el comando touch, podremos ver este fichero en la devolución del comando ls. A continuación, intentaremos ls con varias opciones para observar las diferencias en la información que nos devolverá el sistema UNIX.</p> <pre><code>ls -l ls -hl ls -a ls -al ls -ahl </code></pre> <h3 id="cp--copiar-un-fichero">cp : Copiar un fichero</h3> <p>Copiar un fichero es muy simple. El comando “copy” sirve dos funciones importantes: hacer una copia de respaldo simple del archivo en cuestión, y también renombrarlo mientras se conserva el original.</p> <p>Supongamos que deseamos respaldar el fichero naranja.txt en un subdirectorio llamado respaldos (expondremos en más detalle más adelante). Para hacer esto, ingresaremos lo siguiente:</p> <pre><code>cp naranja.txt respaldos/ </code></pre> <p>La barra hacia adelante al final del nombre respaldo indica que esto es un directorio.</p> <p>Para emplear el comando cp para cambiar el nombre de un fichero sin destruir el original, tipearíamos lo siguiente:</p> <pre><code>cp naranja.txt mandarina.txt </code></pre> <p>…donde mandarina.txt es el nombre nuevo del fichero.</p> <p>Y para copiar el fichero original naranja.txt al directorio respaldos y cambiarle el nombre al mismo tiempo, ingresaríamos lo siguiente</p> <pre><code>cp naranja.txt backups/mandarina.txt </code></pre> <h3 id="mv--mover-o-renombrar-un-fichero">mv : mover o renombrar un fichero</h3> <p>El comando mv funciona de forma similar al comando cp, pero con una diferencia fundamental. Mover el fichero significa destruir el nombre de fichero original.</p> <p>Por lo tanto el siguiente comando:</p> <pre><code>mv naranja.txt mandarina.txt </code></pre> <p>…reemplazará el fichero naranja.txt con un fichero nuevo llamado mandarina.txt .</p> <p>Puede mantener el nombre de archivo con el comando mv al movel el fichero a un directorio distinto. Para hacerlo así, ingrese lo siguiente:</p> <pre><code>mv naranja.txt respaldos/ </code></pre> <p>Esto moverá el fichero naranja.txt adentro del directorio respaldos. Para mover el fichero al directorio respaldos y para renombrarlo al moverlo, ingrese:</p> <pre><code>mv naranja.txt respaldos/mandarina.txt </code></pre> <h3 id="rm--remover-un-fichero">rm : remover un fichero</h3> <p>Remover un fichero también es muy simple. El comando para hacerlo es rm. Para remover completamente y destruir un fichero, simplemente ingrese:</p> <pre><code>rm naranja.txt </code></pre> <h3 id="nota-corta-en-el-uso-interactivo">Nota corta en el uso interactivo.</h3> <p>Los comandos para copiar, mover y remover ficheros pueden provocar bastante destrucción si no se los emplea cuidadosamente. Para accionar de forma interactiva, ingrese dicha opción ingresando:</p> <pre><code>cp -i naranja.txt respaldos/naranja.txt mv -i naranja.txt mandarina.txt rm -i naranja.txt </code></pre> <p>Al activar la opción interactiva, se le solicitará que responda si o no (yes o no respectivamente) para cada fichero que está solicitando remover. En los comandos cp -i y mv -i se le solicitará si y sólo si el fichero que está copiando o está moviendo sobreescribiría otro fichero.</p> <h3 id="file-examina-el-tipo-de-fichero">file: examina el tipo de fichero</h3> <p>El comando file es útil para determinar qué tipo de fichero es un fichero en particular. En los sistemas operativos similares a UNIX, el nombre de fichero es bastante flexible, y la extensión de fichero (por ejemplo, el apéndice .txt) no siempre es necesaria. De tal manera, si alguien le envió un fichero y desea tener certeza de qué tipo de fichero es antes de abrirlo, emplee el comando file de esta manera:</p> <pre><code>file nombre_del_fichero </code></pre> <p>Los resultados para un fichero de texto podrían ser algo como esto:</p> <p>name_of_file: ASCII text</p> <p>Supongamos que alguien le envió un fichero de imagen llamado sultano.mengano en formato PNG y desea tener certeza que realmente se trata de un fichero PNG. Simplemente ingresamos:</p> <pre><code>file sultano.mengano </code></pre> <p>Si el fichero realmente es un fichero PNG, deberíamos ver algo similar a esto: sultano.mengano: PNG image data, 922 x 691, 8-bit/color RGBA, non-interlaced</p> <h3 id="less--lee-un-fichero">less : Lee un fichero</h3> <p>El comando lees es un tipo de paginador disponible para ver y navegar en ficheros de texto sin alterar o abrir el fichero en un editor de texto. Se le recomienda leer la man-page para este comando porque posee muchos atributos útiles como realizar búsquedas a través del texto de palabras o cadenas específicas. Invóquelo con el nombre de fichero que desea ver:</p> <pre><code>less naranja.txt </code></pre> <p>Si hay más texto en el fichero que el que puede presentar la pantalla de su terminal, presione la barra espaciadora para desplazar página a página. A menudo, las teclas AvPág o RePág del teclado operarán y las flechas del cursor le permitirán normalmente desplazarse línea por línea en ambas direcciones.</p> <h3 id="mkdir-crear-un-directorio">mkdir: Crear un directorio.</h3> <p>Usted creará un directorio usando el comando mkdir. Para crear el directorio respaldos que usamos en los ejemplos previos, ingrese:</p> <pre><code>mkdir respaldos </code></pre> <h3 id="cd--cambiar-directorio">cd : cambiar directorio</h3> <p>El comando cd se emplea para cambiar de directorio. Si estamos en nuestro directorio home, y deseamos ir al directorio recientemente creado respaldos, simplemente ingresamos:</p> <pre><code>cd respaldos </code></pre> <p>Para regresar al directorio home, simplemente tipeamos:</p> <pre><code>cd </code></pre> <p>Al ingresar cd por sí mismo siempre nos llevará al directorio home, lo cual es útil si estamos en una rama alejada en nuestro árbol de directorios. Si sólo deseamos volver un nivel, ingresamos:</p> <pre><code>cd .. </code></pre> <p>Y por supuesto, suempore podremos ingresar la ruta completa del directorio al cual queremos desplazarnos:</p> <pre><code>cd /usr/bin </code></pre> <p>Para cambiar al directorio de trabajo anterior, ingresamos:</p> <pre><code>cd - </code></pre> <h3 id="rmdir--remover-un-directorio">rmdir : remover un directorio</h3> <p>Y para remover un directorio vacío, empleará el comando rmdir.</p> <pre><code>rmdir respaldos </code></pre> <p>El comando rmdir sólo funcionará si el directorio que desea eliminar está vacío de ficheros. Si un directorio contiene ficheros en él y se encuentra seguro que desea eliminar dicho directorio junto con todos los ficheros que contiene, tiene que ingresar el comando rm de forma recursiva, ingresando:</p> <pre><code>rm -r nombre_de_directorio </code></pre> <p>La opción -r le dice al comando rm que remueva el directorio y todo su contenido, incluyendo subdirectorios. ¡Sea muy cuidadoso al emplear este comando! De hecho, la mejor forma de ejecutar este comando es ingresar:</p> <pre><code>rm -ir </code></pre> <p>Esto invocará el uso interactivo del comando de remoción, que le preguntará que responda “yes” o “no” a cada fichero y directorio dable de ser removido. Nuevamente, lea las man-pages para mayores detalles en http://man.openbsd.org/.</p> <h3 id="clear--borrar-la-pantalla">clear : borrar la pantalla.</h3> <p>Finalmente, para borrar la pantalla ingrese lo siguiente en el intérprete:</p> <pre><code>clear </code></pre> <hr /> <p>~peron Editado por ~ffuentes 22-01-2021</p> Uso básico de tmux 2021-01-22T21:11:00-03:00 wiki.texto-plano.xyz/2021/01/22/tmux <h2 id="qué-es-tmux">¿Qué es tmux?</h2> <p>Es un administrador de ventanas para la terminal que nos permite con una sola conexión al servidor abrir varias aplicaciones al mismo tiempo y mantener una sesión activa incluso si nos desconectamos del mismo. Tmux es un proyecto creado por OpenbSD (Texto-plano funciona en un servidor OpenBSD).</p> <h2 id="cómo-iniciar-una-instancia-de-tmux">¿Cómo iniciar una instancia de tmux?</h2> <p>Simplemente escribe:</p> <pre><code>tmux </code></pre> <h2 id="cómo-abro-una-nueva-ventana">¿Cómo abro una nueva ventana?</h2> <p>Todas las operaciones de tmux se realizan con la combinación de teclas Ctrl+b. Mantienes presionada Ctrl mientras presionas b, sueltas ambas y presionas la tecla que realiza la función que deseas.</p> <p>En este caso debes presionar Ctrl+b, C</p> <h2 id="cómo-me-muevo-entre-ventanas">¿Cómo me muevo entre ventanas?</h2> <p>Presionas Ctrl+b como antes y digitas el número de la ventana. Por ejemplo, Ctrl+b, 1.</p> <p>También puedes moverte hacia la derecha con Ctrl+b, n. Para moverte hacia la izquierda presiona Ctrl+b, p.</p> <p>Otra opción es seleccionarla de un listado con Ctrl+b, w.</p> <h2 id="le-puedo-cambiar-el-nombre-a-una-ventana">¿Le puedo cambiar el nombre a una ventana?</h2> <p>Sí, se puede con Ctrl+b, , (sí, es una coma).</p> <h2 id="cómo-cierro-una-ventana">¿Cómo cierro una ventana?</h2> <p>Con Ctrl+b, &amp;. (te va a preguntar si estás seguro/a).</p> <h2 id="cómo-muevo-una-ventana-de-lugar">¿Cómo muevo una ventana de lugar?</h2> <p>Esto es un poco más complejo pero se hace así:</p> <p>Primero: Ctrl+b, : (dos puntos)</p> <p>Segundo (escribimos):</p> <p>swap-window -s [número de la ventana] -t [posición que queremos]</p> <h2 id="cómo-me-salgo-de-la-sesión-ssh-sin-cerrar-tmux">¿Cómo me salgo de la sesión ssh sin cerrar tmux?</h2> <p>Escribimos:</p> <p>Ctrl+b, d</p> <h2 id="cómo-recupero-una-sesión-de-tmux">¿Cómo recupero una sesión de tmux?</h2> <p>Supongamos que al día siguiente de haber iniciado una sesión de tmux volviste. Escribe en la terminal:</p> <p>tmux a -t 0 (suponiendo que es la sesión 0, puedes tener varias)</p> <hr /> <p>Hay muchas más cosas que se pueden hacer pero esto es lo fundamental para poder usar nuestra sesión SSH de una forma eficiente y mantener procesos funcionando cuando apaguemos nuestro pc en casa. Uno de los casos más comunes es mantener una sesión de IRC activa.</p> <p>Cualquier consulta a admin arroba texto-plano.xyz</p> Claves públicas, claves privadas y SSH ¿Para qué sirven? 2021-01-22T21:04:00-03:00 wiki.texto-plano.xyz/2021/01/22/usar-clave-ssh <p>Cuando revisamos nuestro correo o la cuenta de alguna red social generalmente utilizamos una <strong>contraseña</strong>. Sin embargo, a menos que generes contraseñas seguras y sin repetirlas jamás entre servicios, no es seguro. En el caso de un sistema UNIX como un servidor Linux o un BSD (como Texto Plano) es aún más peligroso por la cantidad de cosas que es posible hacer con un servidor. Por eso para conectarnos a un sistema hoy en día utilizamos una conexión cifrada (a través del protocolo SSH) y una clave criptográfica para identificarnos.</p> <p>¿Cómo funciona una clave criptográfica? Es muy simple: Si me quiero conectar a un servidor como Texto-Plano necesito tener una clave SSH. Esta clave (que puede usar distintos algoritmos de cifrado como RSA o ED25519) tiene 2 partes:</p> <p>Clave privada (esta sólo la tienes tú y nadie más) Clave pública (ésta se comparte con el servidor) Para autenticarte, SSH te pedirá tener la misma clave pública que está almacenada en el servidor, pero para que funcione debes tener la clave privada junto a ella, de lo contrario, no puedes demostrar que esa clave es tuya.</p> <h2 id="cómo-creo-una-clave-para-ssh">¿Cómo creo una clave para SSH?</h2> <h3 id="openssh">OpenSSH</h3> <p>Con OpenSSH (generalmente en sistemas UNIX como GNU/Linux, BSD u OSX pero también puede usarse en Windows si lo instalas) utilizas el siguiente comando:</p> <pre><code>ssh-keygen </code></pre> <p>Y siguiendo las instrucciones deberías tener dos archivos que por defecto se llaman:</p> <ul> <li>id_rsa (o id_ed25519, privado, no lo compartas con nadie)</li> <li>id_rsa.pub (o id_ed25519.pub, público, el que debes copiar en el otro servidor)</li> </ul> <p>Luego sólo te queda copiar el archivo con la clave pública al servidor, en la carpeta ~/.ssh/.</p> <p>Si accedes al servidor con una contraseña puedes utilizar el comando ssh-copy-id para transferirlo tú mismo:</p> <pre><code>ssh-copy-id usuario@servidor.dominio </code></pre> <p>De no tener acceso al servidor con contraseña debes o contactar al administrador o entrar desde otro equipo en que sí tengas acceso y pegar el contenido de id_rsa.pub en ~/.ssh/authorized_keys.</p> <p>Si tienes acceso a tu carpeta de usuario puedes hacer esto con la utilidad cat:</p> <pre><code>cat id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys </code></pre> <p>(Si es tu primera clave pública en texto-plano.xyz tendrás que enviarlo por correo a admin arroba texto-plano.xyz ya que este servidor no admite autenticación por contraseña)</p> <h3 id="con-puttygen-windows">Con PuttyGen (Windows):</h3> <p>Generalmente en Windows nos conectamos a sistemas externos por consola a través de Putty que emplea un formato distinto, el archivo .PPK.</p> <p>Para esto necesitamos la utilidad PuttyGen que va a crear una clave para nosotros. Tanto Putty como PuttyGen los podemos conseguir en la web de Putty.</p> <p>Primero ejecutamos PuttyGen. Haremos clic en “Generate” y luego que el proceso termine tendremos que hacer clic en “Save private key”. Putty guarda su clave pública en un formato distinto así que es preferible que la copiemos desde el cuadro de texto de arriba que dice “Public key for pasting into OpenSSH authorized_keys file” y ese archivo lo pegamos en ~/.ssh/authorized_keys (o se lo enviamos al administrador del servidor si es el caso)</p> <p><img src="https://texto-plano.xyz/img/puttygen.jpg" alt="Puttygen" class="center-image" /></p> <p>Luego sólo queda agregar nuestra clave privada a Putty para conectarnos. Nos vamos a Connection -&gt; SSH -&gt; Auth y donde dice “Private key file for authentication” presionamos Browse y buscamos el archivo .PPK</p> <p><img src="https://texto-plano.xyz/img/putty-key.jpg" alt="Putty" class="center-image" /></p> <p>Estamos listos para conectarnos. Volvemos a Session y digitamos la dirección del servidor, opcionalmente guardamos la conexión (si la vamos a usar en Saved Sessions) y presionamos Open para conectarnos.</p> <hr /> <p>Cualquier duda al respecto envíanos un correo a admin arroba texto-plano.xyz</p>