miércoles, 28 de febrero de 2018

Claves Privadas y Publicas para SSH, Correo y demás

Bien, una vez mas y como siempre, escribo esta pequena explicación primero para mi mismo, y luego para el que le sirva de algo.

Las conecciones remotas a través de el protocolo SSH se pueden facilitar obviando el usuario y la contraseña usando sistemas de validacion asimetrica.

Esta validación se fundamenta en la creación de dos claves encriptadas, una privada que solo tendrá el dueño del mensaje o la conección y una pública que tendran los destinatarios de correo o las computadoras remotas.

El principio es practicamente el mismo para SSH y para los correos autentificados.

Primero que nada el usuario (x-man) que desee conectarse por SSH con Claves debe generar esas claves en el Cliente (aqui x-man-pc). Para esto usara en sistemas niXs una herramienta llamada ssh-keygen.

x-man-pc:~ x-man$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/x-man/.ssh/id_rsa):
Created directory '/Users/x-man/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/x-man/.ssh/id_rsa.
Your public key has been saved in /Users/x-man/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:G8M+S4PG5MfdWmbntaRnptl3KBgnpV2HdBoS8L1mJ8w X-man@x-man-pc.local
The key's randomart image is:
+---[RSA 2048]----+
|          ....   |
|           ...o .|
|            .o.= |
|       .    .o+..|
|      . S  + .E..|
|     + + =+.oo o |
|      = O .== .o.|
|     . o +.=.o*=+|
|        . .  =*oo|
+----[SHA256]-----+


Esto significa que ssh-keygen va a crear un par de claves publica/privada y las va a guardar (por defecto) en la carpeta (Escondida por . ) de usuario con el nombre id_rsa

Ahora ssh-keygen ha creado una nueva carpeta y dentro estan las dos claves.

Y cuando quiero conectarme por ssh...

este fingerprint (arriba) es lo mismo que esta guardado en ir_dsa.pub, es sólo otra formato, para verlo como fingerprint otra vez, debemos ejecutar:
 
x-man-pc:.ssh x-man$ ssh-keygen -l -f id_rsa.pub
2048 SHA256:G8M+S4PG5MfdWmbntaRnptl3KBgnpV2HdBoS8L1mJ8w x-man@x-man-pc.local (RSA) 
 
cambiar la Paraphase:
ssh-keygen -p -f ~/.ssh/id_dsa

Tipos de claves:
ecdsa = 256
dsa = 1024
rsa = 2048 
 
Importante:
Si el cliente pregunta "password"  3 veces antes de ejecutar la conneccion ssh, y luego conecta sólo poniendo un usuario existente en el servidor-ssh es porque la clave publica no se ha exportado al servidor, para esto ejecutamos:


sudo ssh-copy-id -i ~/.ssh/id_rsa.pub administrator@192.168.148.136

donde administrador va a ser el usuario que va a poder entrar con esa clave sin importar el nombre que tenga en el cliente. Es el nombre antes de @nombrehost. Tiene que existir en el Servidor

Si todavia para exportar la clave pregunta por 3 veces por la clave del administrador, puede ser que el acceso sobre ssh esta impedido para el root

Mas Informacion:
https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/openssh.html
http://manpages.ubuntu.com/manpages/xenial/en/man8/sshd.8.html 
https://www.linuxtotal.com.mx/index.php?cont=info_seyre_010
https://www.linuxtotal.com.mx/index.php?cont=info_seyre_003
https://serverfault.com/questions/690855/check-the-fingerprint-for-the-ecdsa-key-sent-by-the-remote-host
https://blog.mellenthin.de/archives/2007/08/08/ssh-fingerprint-uberprufen/
https://apple.stackexchange.com/questions/254468/macos-sierra-doesn-t-seem-to-remember-ssh-keys-between-reboots

TIPPS:
Si tienes varias computadoras no necesitas generar una nueva Llave en cada una, lo causaria que el servidor tenga una lista grande de computadoras, claves publicas, etc. , es suficiente si copias las claves que ya tienes de computadora en compu. No confundas esto con ssh-copy-id. Esta copia la debes realizar manualmente por ejemplo con un usb-stick o por la red.

- En algunas Distribuciones de Linux viene el usuario root desactivado, si lo activas por ejemplo con 
sudo -u root passwd
puedes tener problemitas para logearte por ssh y hasta para exportar la clave. Esto es puede ser porque el ssh esta desactivado para root. Para esto te vas a /etc/ssh/sshd_config y agregas la linea:
PermitRootLogin yes

- Cuando copiamos unas claves en la carpeta .ssh de manera manual (con el explorador de archivos, finder, cp) los derechos se cambian a rwxrr o 644, lo que ssh reconocerá como riesgoso. Al probar la conexion aparece el mensaje:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/usuariox/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/usuariox/.ssh/id_rsa": bad permissions
root@servidor.com's password:


para reparar esto basta asignarle los permisos 600. Algunos Blogs dicen que el 400 funciona, cosa que a mi no me resulta puesto que me dice que no es accesible.


miércoles, 20 de diciembre de 2017

ocultar comentarios en vim

AGRUPA LOS COMENTARIOS EN UNA LINIA Y LOS MUESTRA RESUMIDOS
:set fdm=expr
:set fde=getline(v:lnum)=~'^\\s#'?1:getline(prevnonblank(v:lnum))=~'^\\s#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
 
MAS LEGAL QUE LA SIGUIENTE PARA DESAPARECER COMENTARIOS
:hi! link Comment Ignore 
 
CAMBIA EL COLOR DE LOS COMENTARIOS, SI VIM ES NEGRO Y SE COLOCA NEGRO DESAPARECEN 
:hi! Comment guifg=bg ctermfg=white 



 
 

jueves, 23 de noviembre de 2017

Encontrar a que Unidad Organizacional pertenece un usuario

A veces hay cosas que deberian ser faciles pero son dificiles. Esta es una de ellas. A pesar de todo no es tan dificil:

en PowerShell ejecutar:

  Get-ADUser nombredelusuario

Entre la informacion importante que volcará esta el Distiguishname, donde esta la OU

viernes, 10 de noviembre de 2017

Mis notas sobre Python3.6

Opciones confundibles:

>>> pals = ['uno','pepe','tomate', 'gusanito']
>>> for p in pals:
    print(p)

   
uno
pepe
tomate
gusanito


>>> print(pals)
['uno', 'pepe', 'tomate', 'gusanito']


EXPLICACION:
pals es una lista. Listas se conocen por sus corchetes cuadrados [] .  En el primer ejemplo contamos cada elemento de pals, llamandolo "p" y lo imprmimimos. Asi el resultado fue cada elemento uno tras otro sin mas ni menos

print(pals)
Imprime la lista, tal como es, con corchetes, comillas, comas separadoras, y elementos.

si despues de esto hicieramos

>>>len(p)
8

mientras que
>>>len(pals)
4

y eso es porque
>>>print(p)
gusanito

mientras que:
 
>>> print(pals)
['uno', 'pepe', 'tomate', 'gusanito'] 


osea que 8 es el largo de la palabra gusanito y 4 la cantidad de elementos en la lista pals



viernes, 15 de septiembre de 2017

2.- Linux from Scratch bajo mi concepto

despues de borrar y borrar cosillas, me canse y crei capaz de empezar por otro lado: Linux desde cero. Mi plan es mas o menos asi:

1. Formatear un disco (con fdisk, diskpart, etc ?)
2. Ponerle MBR con install-mbr
3. Instalarle Grub con grub-install
4. Copiar un kernel

Mi objetivo es lograr todo esto desde la consola de comandos, pero para empezar voy a usar el instalador standard. Con este, mi proceso esta siendo asi:

1. Crear la tabla de particion. Para esto me ayudé con el video:
https://www.youtube.com/watch?v=AkkW63toTOM
aunque no separé / y /home, sino que hice solo /. /boot le asigne 250MB y swap 600MB. El disco virtual era de unos 6 GB
Al aceptar arranca ubuntu con una rutina de "installing the system"

Con un poco de búsqueda, me parecio que lo mejor para lograr mi objetivo es Gentoo Linux.

El Manual de Gentoo Linux recomienda dos caminos para la particion. Entre Fdisk y parted, escoji fdisk por parecer mas antiguo y tener mas adeptos asi como funciones. parted parece una implementacion que salva a los discos mayores de 2TB, cosa que hasta podría esperarse de fdisk en un futuro (quizas ya ahora, y estoy en el pasado)

Particion de Arranque BIOS:
fdisk
d (si se desea eliminar particiones existentes, mi DD virtual estaba nuevecito)
n (nueva)
p (primaria)
1 (particion no. 1)
 2048 (primer sector)
+2M (ultimo)
t 4
Particion de Arranque
default (al final de la anterior)
+128M
t 83 (linux)

Particion SWAP
default (al final de la anterior)
+1024M
t 84 (linux swap)Particion Root / 
default (al final de la anterior)
bis zum ende (default)
t 83 (linux)

Crear los sistemas de archivos:
mkfs.ext2 /dev/sda2
mkfs.ext4 /dev/sda4

el 2 con 2 y el 4 con 4 es solo coincidencia. Systema de Archivos EXT2 se utiliza para boot y ext4 es mejor para los archivos.

Inicializar y Activar la partition swap
mkswap /dev/sda3
swapon /dev/sda3

montar root
mount /dev/sda4 /mnt/gentoo

Copiar el Stage3 adentro
cd /mnt/gentoo
wget http://distfiles.gentoo.org/releases/amd64/autobuilds/20170824/stage3-amd64-nomultilib-20170824.tar.bz2 (puede variar segun version)

desempaquetar el bz2
tar xvjpf stage3-*.tar.bz2 --xattrs --numeric-owner


montar la particion gentoo
mount /dev/sda4 /mnt/gentoo

configuring compiler option
nada me molesta mas que un handbook o tutorial que parezca muy facil, explique banalmente y mande a leer otros manuales indecifrables. Exactamente esto es lo que este apartado de la guia de gentoo me parece.
Bueno, pero a lo hecho pecho y hay que seguir adelante.
IMPORTANTE: si reinicias la maquina, tendras que remontar la particion gentoo otra vez

Critica:
el trabajo de la gente de gentoo es maravilloso. Se puede aprender mucho a traves de este sistema. Pero la "independizacion" me parece perjudicial. Me explico: gentoo ofrece comodas herramientas para la configuracion como portage o emerge. Estas herramientas son lamentablemente solo bajo gentoo disponible. Aprender a configurar linux a traves de esto significa aprender gentoo y no linux estandar.

selecionar los mirrors:
otra vez a traves de una herramienta gentoo, aunque es bastante rudimentaria y a pesar de ello útil, ya que si no habria que escribir largamente direcciones de url´s en el archivo make.conf en una variable llamada GENTOO_MIRRORS

mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

mkdir /mnt/gentoo/etc/portage/repos.conf

cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

Copiar informacion DNS
cp -L /etc/resolv.conf /mnt/gentoo/etc/

Montar archivos de sistema necesarios
root #mount -t proc /proc /mnt/gentoo/proc
root #mount --rbind /sys /mnt/gentoo/sys
root #mount --make-rslave /mnt/gentoo/sys
root #mount --rbind /dev /mnt/gentoo/dev
root #mount --make-rslave /mnt/gentoo/dev

descartar algun problema de gentoo con el cd
root #test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
root #mount -t tmpfs -o nosuid,nodev,noexec shm /dev/shm
root # chmod 1777 /dev/shm
entrar en el nuevo ambiente
root #chroot /mnt/gentoo /bin/bash
root #source /etc/profile
root #export PS1="(chroot) $PS1"

Montar la particion boot
el manual dice, "crear la carpeta boot", pero ya esta creada
root #mount /dev/sda2 /boot

otra opcion gentoo: 
Configurar Portage
 root #emerge-webrsync
 hasta aqui llege donde un error se repite:
rsync_ recv_generator mkdir "/usr/portage/xxxxx failed: no space left on device (28)
parece ser que la particion esta llena, y como el disco es de alrededor 8 GB casi no puede ser, entonces el problema parece estar en los inodos. Pero antes de entrar en la lata de buscar un error en un sistema de test del que no estoy ni tan convencido, prefiero continuar como si nada pasara...

eselect profile list
eselect profile set 2 (el standard, paso innecesario)

Critica:
No encuentro como instalar 2 perfiles. El estandar es nomultilib que no incluye las librerias x32 pero si ademas quiero systemd no veo la forma de elegir los dos

lunes, 17 de julio de 2017

mis notas sobre un DHCP server en linux (ubuntu 16)

modificar el archivo de interfaces para asignar al servidor una ip fija:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens3
iface ens3 inet static
        address 192.168.0.240
        netmask 255.255.255.0
        gateway 192.168.0.1
        dns-nameservers 213.146.232.2 213.146.230.2


reiniciar la tarjeta de red
sudo service networking restart

modificar el nombre del host
sudo nano /etc/hostname 

e importante para que resuelva su propio nombre
sudo nano /etc/hosts 
agregar el nombre en la linea despues de localhost para 127.0.1.1


logs se encuentran en
cat /var/lib/dhcp/dhcpd.leases

y los de sistema que se pueden ver con
cat /var/log/syslog | grep -Ei 'dhcp'

escribir el archivo de configuracion
sudo nano /etc/dhcp/dhcpd.conf

contenido (minimo) del archivo de configuracion
# Lokal netz
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option domain-name-servers 213.146.232.2, 213.146.230.2;
# Dynamisch IPs
subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.50 192.168.0.70;
        default-lease-time 86400;
        max-lease-time 86400;
        }


reiniciar dhcp
sudo /etc/init.d/isc-dhcp-server start


viernes, 14 de julio de 2017

pequeno razonamiento sobre como utilizar los recursos de thunderbird para el trabajo efectivo

Cuales recursos?

Thunderbird no solo recibe emails. Aparte de otros clientes de email muy aceptados como Outlook o iMail, Thunderbird tiene una infinidad de recursos limitados solamente por nuestros propios conocimientos, ya que por ser OpenSource, podemos hasta "reescribir" el código para adaptarlo a nuestras necesidades.

Esto de reescribir el código es por supuesto una exageracion una porque pocos estamos en la capacidad de hacerlo y dos porque no es necesario porque los recursos que ya tiene son muy grandes y poderosos.

- Carpetas de Busqueda
- Carpetas (IMAP)
- Marcas con estrella (kennzeichnung)
- Palabras clave (schlagworte)
- Filtros rápidos
- Filtros
- Convertir en
-- Cita
-- Nota
- Columnas y Configuracion de Columnas para Carpetas

Ejemplo:

Casi una vez al mes pero irregularmente me llega un email invitandome a una conferencia a la que quiero participar.
Tengo varias reglas para que todos los email del departamento invitador se metan en una carpeta de notificaciones, pero quisiera que exactamente esas invitaciones no se me pasen desapercibidas.
En mi compañia los departamentos escriben nombrandose con corchetes en el asunto. El asunto es un poco variable, aunque he observado que una palabra siempre esta alli. Por esto, genero un filtro que busque dentro de la carpeta DEPTO-CONT la cadena "invitacion" y marque esta con mi palabra clave "citas" y agrege una estrella.

Como en la carpeta hay tambien invitaciones anteriores, entonces pierdo nuevamente un poco el objetivo, con lo que complemento el filtro con "antiguedad en días" y asi le pido que solo marque asi los emails que tienen menos de 60 dias.

Una posibilidad es tambien copiar o mover los emails que cumplen la regla a otra carpeta, llamada por ejemplo "Citas-Actuales". Copiar tiene una desventaja: cada vez que aplicas el filtro a la carpeta copia nuevamente lo mismo. Mover tiene la desventaja de que cuando busques los emails del departamento, los de estas citas no van a estar en esta carpeta. Para que esta repeticion no suceda, puedes agregar el filtro "estatus""no es""marcado", pues como la marca la agrega el filtro al copiar, no volvera a aplicarse el filtro en los emails ya copiados porque al mismo tiempo fueron marcados.

Esta desventaja de mover tambien se puede solventar con una carpeta de busqueda, pues es virtual y puede contener emails que estan en diferentes carpetas.


Ademas de estos recursos estandar de Thunderbird, puedo recomendar los Addons
ColorFolder
RegExSuche
ThemeFontSizeChanger
CalendarTweks

martes, 13 de junio de 2017

Como usar una carpeta compartida en la red para guardar Backups de Time Machine de Apple Mac

Para la mayoría, Apple Mac resulta un icono de la facilidad y amabilidad con el usuario. Claro que el usuario solo abre la maquinilla y lo ve todo bonito, pero cuando se trata de administrar Mac en un ambiente empresarial es otra la historia.

Los usuarios Windows, cuentan con Shadows Copy. Si los usuarios Mac guardan en una Carpeta de servidor windows esta funcion estar corriendo "por debajo de la mesa". Si un archivo se pierde o borra, se podrá recuperar del servidor windows, pero solamente con un Cliente windows en el que se haga clic con el boton derecho y luego en Versiones.

Este clic no estará presente en Mac, aunque las versiones estén ahí.

Claro que hay mucho que se puede hacer: Maquinas Virtuales, Servidores de Remote Desktops Services, Exploradores de Archivos especializados, etc. Lamentablemente todo resulta "pañitos calientes" o en IT-Jerga "Worksarounds".

Por otro lado, utilizar una Carpeta de Servidor Windows con SMB no siempre resulta tan facil con mac. Mac no tiene GPOs con las que podamos mandar los perfiles completos al servidor y una sincronizacion no es de mi agrado (pocas veces sabe el usuario que esta sincronizado y que no).

Pero Mac tiene su propia solución, y además que se ve bonita (esto es siempre importante para Mac y sus usuarios) se llama Time Machine o Maquina del Tiempo. En TM puedes ver como en el tiempo tus documentos y toda tu máquina ha pasado por el tiempo y puedes restablecer con una increible facilidad las versiones pasadas.

Claro, tienes que enchufar un disquito externo a tu mac... o también correrá bien (o mejor) si te compras una no tan económica Cápsula del Tiempo, con la que podrás guardar tus Backups por el aire.

Pero si la empresa tiene un grande y poderoso servidor SMB, porque necesitamos unos aparatitos de jugete como las capsulas del tiempo?. Eso se puede preguntar cualquier IT administrador que tenga mas de dos dedos de frente y algunos usuarios con fundamento.

Pues porque no es tan fácil. Lo ideal sería que mac nos permitiera en Time Machine, encontrar las Shares que estan disponibles en la red y que podamos decirle "aqui por favor". Pero esto no es posible. Si bien existe un "hack" bastante elegante y eficiente que nos lo permitirá:

Crea una Imagen de Disco con la aplicación estandard de administracion de Discos. Debe ser HFS-J (journaled) y de crecimiento automatico "parseled bunded" ni mas esta decir que del tamaño adecuado para tus documentos.

Pon esta imagen en tu carpeta de red (Share) y luego montala en el sistema de archivos (simple doble clic)

Ahora manda a Time Machine a usar esta unidad montada con

sudo tmutil setdestination /Volumes/TimeMachine

Despues tendrás el problema de montar esta Carpeta de Servidor o Share automaticamente en mac, pues aunque esto parezca evidente, y de echo en un clic en Windows, resulta un dolor de cabeza en mac. Sobre todo, si tus usuarios no son Administradores de su Cliente.

Pero esto es tema de otro Blog donde me ocupo de esto.
 


miércoles, 10 de mayo de 2017

Thunderbird deja todos los documentos anexos en en escritorio de Mac

escribo "de Mac" porque realmente no habi visto esto antes en Windows, quizas tambien pasa, quizas le pasa a alguien. Pero esta molesto hábito se puede configurar relativamente fácil y los encontramos en en link:

http://cote.cc/blog/stop-thunderbird-from-littering-your-desktop-with-attachments

Por si el link se pierde, o la pagina, o simplemente necesitas un manual es espanol, lo explico a continuacion:

- Ve a configuracion: Extras --> Configuracion --> Avanzada --> Trabajar la Configuracion (about:config)

- Ahi buscas la clave : "browser.helperApps.deleteTempFileOnExit" sin comillas, que debe estar presente y configurada como "False".

- Dale doble clic y deberia cambiar a "True", sino haslo manualmente.

y ya esta, con esto Thunderbird borrara todos los archivos temporales dejados al terminar la sesion.



jueves, 4 de mayo de 2017

Identacion para archivos XML sin identacion en TextWrangler

TextWrangler es excelente. Si algo le puede criticar es que es un poquito lento, pero para lo brinda en comparacion con los rapidos, se puede soportar.

Un problemita que me ocupó mientras trataba de editar archivos de configuracion sin saltos de linea en xml, es justamente que no tienen saltos de linea, es decir que toda la configuración era una sola linea. A pesar de que esto pueda parecer lógico, tambien debe resultar logico que se pueda crear una identacion, ya que cada linia posee un nuevo tag con la forma <> y esto lo puede encontrar un programa.

Entonces por esto me di a la busqueda de una solucion para ello y encontre esta bella solucion:
https://magp.ie/2010/02/15/format-xml-with-textwrangler/

No por copiar, sino porque me desagrada que a veces cuando guardo unos vinculos con buena informacion desaparecen de internet, pongo aqui tambien el contenido de la solución, sin dejar de agredecer a su autor original Eoin Gallagher

-----------------------------------------------------------------------------------------------------------------------
Simple guide
We want to add a UNIX script to TextWrangler so it can format an XML file… to do this, do this…
    • Open TextWrangler and open a new text file.
    • Copy and paste the code below into this file.
1
2
#!/bin/sh
XMLLINT_INDENT=$'\t' xmllint --format --encode utf-8 -
    • Save the file, something like Tidy XML.sh, in the ~/Library/Application Support/TextWrangler/Text Filters/ folder.
    • Now anytime you want to format an XML file, just go to the Text menu and select the Tidy XML.sh script and BOOM, neat tidy XML.
text-filter
This is an interesting facility to extend an already great text editor, and I will be looking into more cool scripts that can hopefully lessen my daily annoyances.
UPDATED:: Added UTF8 encoding, thanks Rolan.
UPDATED:: Added a post to format PHP code in TextWrangler.
UPDATED:: Updated for TextWrangler version 4.5.8.

---------------------------------------------------------------------------------------------------------------------

miércoles, 12 de abril de 2017

Templates o Plantillas en Libre Office para Mac

Para crear Templates que se puedan usar en el futuro en LibreOffice, es necesario crear el template (mejor vacío) y luego guardarlo como template.

En las ayudas estandar de libre office aparece un camino facil de equivocar, puesto que (por lo visto en mac el camino es un poco distinto, hay discrepancias y redundancias)

Primero:
Crear un Documento con las características que deseamos. Luego guardarlo como plantilla con
File --> Templates --> Save as Template ---> MyTemplates --> Set as Default

Esto abrira un cuadro de Dialogo que permitira guardar la plantilla como estandar para los proximos documentos.

Si haz usado un documento existente, con contenido, siempre se abrira el contenido. Cosa que me parece tonta puesto que lo interesante es el formato.
De alguna manera se puede disculpar, puesto que es quizas pensado para que siempre aparezca el mismo titulo, asi como los pie de paginas y otras caracteristicas que son intermedias entre contenido y formato.

Si haz guardado la opcion "set as Default" cada nuevo documento contendrá automaticamente el contenido de esta plantilla incluyendo, contenido y formatos.

CUIDADO:
Si piensas que el Documento abierto lo puedes "save as" y luego escojer "template", hasta allí funcionará, pero luego no estará esta plantilla en "My Templates" ni mucho menos como estandar.

CUIDADO:
Cuida de guardar un Documento vacio con el contenido que deseas como estandar y no un texto en especial, pues aparecerá despues en cada nuevo documento

martes, 31 de enero de 2017

Trabajar con el Disco duro en Unix

Empezar con Linux puede ser duro, pero si una cosa esta complicada es el trabajo con discos. No me refiero por supuesto a la comoda interfaz grafica, donde hacemos clic y vemos propiedades, sino a trabajar al ciento por ciento con la consola, ya sea por gusto a las complicaciones o porque mantenemos algun(os) servidor(es) sin mejores posibilidades.

Bueno, para mi personalmente el tiempo del ahorro de recursos ya ha pasado. Mi primera computadora fue un 8088 con menos de un Mhz de Taktung mientras que las actuales tienen varios Procesadores con más de 3 GHz. Los servidores siempre estaban mejorcitos. Los programas tambien han mejorado su rendimiento, no todos crecen nada mas. Pero bueno, eso es al final cuestion de gustos y harina de otro costal.

Ver las Particiones de manera bastante explicativa:

df -h

hacer imagenes de disco

dd if=/dev/disco of=/home/desktop/tu_imagen.img --> puede ser que necesitas sudo!

este articulo me gusto:
https://wiki.archlinux.de/title/Image-Erstellung_mit_dd





domingo, 8 de enero de 2017

Controlando el disco duro en linux, detener, dormir, reactivar

Estoy trabajando en desacerme de mis viejos moustrosos servidores y sustituirlos por mis viejas moustrosas portatiles. He empezado con crear un servidor KVM en una Lenovo Sl500. Por ahora todo va bien, pero a pesar de que el monitor esta en mínimo, y el portátil tiene control avanzado de Energía, el disco duro esta siempre trabajando y caliente.

Parece ser que por defecto el standby para discos en Linux viene desactivado, que se puede controlar con hdparm y que este control es solo por sesion y hay que hacerlo manual cada vez que se reinicia. En el siguiente blog encontre una solución que tengo que probar y con la que no estoy del todo satisfecho

http://www.tacticalcode.de/2013/01/festplatte-automatisch-in-standby-mit-hdparm-und-udev.html

Pero sigo buscando...

update 10:43
http://blog.is-a-geek.org/festplatten-in-den-standby-modus-versetzen-unter-ubuntu-desktopserver-mit-hd-idle

update 20.01.17
hoy he tenido un poco de tiempo para realizar pruebas. Primero, intenté configurar los discos a través de la herramienta webmin, que es mi favorita para facilitar el mantenimiento linux.
En webmin encontramos un apartado para esto y es;
hardware --> partition and local disks --> idle parameters --> Standby timeout
esto funciona en el momento, pero la configuracion no se guarda, todavia no he mirado porque,

Otra alternativa, hdparm es bastante aceptable, pero hay que configurarla a traves de scripts para que se funcion de manera automatica. Basicamente:

hdparm -C /dev/sda       --> te dice el estado actual del sda

hdparm -y /dev/sda       --> lo pone en descanso

hdparm -S 10 /dev/sda      --> lo pone en descanso en un tiempo estimado



viernes, 6 de enero de 2017

conectarse con un server por ssh usando una llave ida/rsa

ACTUALIZACION 21:11:2018
Si hemos perdido la clave publica, pero conservamos la privada. Podemos "recrearla" con el comando:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub 

ACTUALIZACION 14:11:2018

Cuando creamos el par de claves, ssh-keygen nos va a mostrar una salida artistica de la llave que se llama randomart. 

Este dibujito, no lo volveremos a ver nunca mas si no lo deseamos específicamente. Una opción sería, habilitar la visualizacion de la llave cuando nos conectamos por ssh con un servidor con la opcion adicional, de forma que el comando total nos queda asi:

ssh root@ssh-server -o VisualHostKey=yes

Con lo que nos mostrará el randomart de la clave que estamos usando para conectarnos.

Pero... y si quisiera usar el randomart para comparar claves, perdidas, danadas o simplemente confundidas?

Bueno, el servidor podría convertir las llaves públicas existentes en el archivo know_host así:

ssh-keygen -lvf  ~/.ssh/known_hosts---> ESTO ME GUSTA !!!

y podríamos comparar esta salida con el resultado en nuestro cliente con:

ssh-keygen -lv   ---> Y ESTO TAMBIEN :-)



ACTUALIZACION 16.05.2018

Tuve que configurarme un laptop nuevo para acceder a estos servidores desde la casa, pero cuando quise enviar su clave con ssh-copy-id y me pidió la contrasena de administrador que no tenia...

Tanto uso el sistema de llaves para ssh, que en un(os) servidores se me olvidó la contrasena. 

Claro, siempre podía logearme en el otro computador, por lo que desde este, importé la clave asi:
  1. pasar la clave publica .pub al computador que sí permite logearse (sin contrasena, pues tiene clave ssh)
  2. Ejecutar en consola, dentro del directorio donde esta la clave:  
    cat id_rsa.pub | ssh root@servidor-obj 'cat >> .ssh/authorized_keys && echo "Key copied"'
  3. este comando manda la salida de cat, al archivo .ssh/authorized_keys de el servidor-obj deseado.
tambien puede interesarte:
https://victorhckinthefreeworld.com/2016/01/28/transferir-llaves-ssh-de-un-pc-a-otro-en-gnulinux/



********************************* 

valido para mac y linux:

ssh-keygen -t rsa -b 4096

-- algunos anaden -f ~/.ssh/id_rsa , si no lo haces, igual el programa preguntará el nombre y el camino del archivo. Si tampoco escribes algo especial, entonces tomará el valor por defecto arriba escrito.

-- también preguntará por una "paraphrase" que es una contraseña adicional para la clave. Personalmente pienso que es muy importante, puesto que si alguien se apropiara de la clave tendría fácil acceso a todos los ámbitos donde la clave funciona. Con una paraphrase tendría también que tener esta para cualquier conexión.

Este comando generara dos claves: id_rsa und id_rsa.pub en el directorio .ssh raiz del usuario.

La .pub es la clave pública, que se copiará en los servidores dentro del archivo "know_host" y la otra es la privada, que debe permanecer secreta en este directorio donde fué generada.

Hasta aqui con la parte cliente. Ahora debemos poner la clave pública entre las claves ssh aceptadas por el servidor. Para esto usaremos ssh-copy-id

ssh-copy-id root@server
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@server's password:

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'user@server'"
and check to make sure that only the key(s) you wanted were added.

 -- OJO SOBRE EL USUARIO -- si queremos dar acceso a otro userx al servidor ssh hay que ejecutar:

ssh-copy-id userx@server     desde el computador del userx y en su cuenta. Teniendo el userx ya una cuenta en el servidor.

--- NOTA IMPORTANTE ---
Si por alguna razon ssh-copy-id no funcionara, se vale tambien copiar (por ftp/filezilla, scp, ssh-->vim, etc.) la clave .pub del cliente /root/.ssh/id_rsa.pub en el servidor en el archivo "host_allow" /root/.ssh/authorized_keys

jueves, 5 de enero de 2017

Reseteando la contrasena de MariaDB en Linux Devuan (una variante Debian)

Update 09.01.17
He encontrado el origen del problema:
al detener el servicio mysql con service mysql stop, he iniciar en modo seguro con deb-maint. Puedo ver las tablas de los usuarios. Alli aparece lo siguiente;
+-----------+---------------------+---------------------+
| host         | user                      | password            |
+-----------+---------------------+---------------------+
| localhost | root                      | * Blablabla-foobar
| server      | root                      | * *Blablabla-foobar |
| 127.0.0.1 | root                      | * *Blablabla-foobar |
| ::1            | root                      | * *Blablabla-foobar |
| localhost  | debian-sys-maint | * *Blablabla-foobar |
| %             | user01                  |                     |
| %             | root                      | * *Blablabla-foobar |
+-----------+----------------------+---------------------+
el problema esta en el "hostname", para que funcione debes poner el "localhost" asi:
mysql -u root -h localhost -p
Pero mucho cuidado, pues esto no va a funcionar en la misma sesion, incluso tampoco con el mismo servicio, pues el modo seguro tambien se puede ejecutar "sin red" con lo que localhost tampoco funciona!



05.01.17 04:57

Si bien la contrasena de SQL no debería significar un problema grave, ya que es mas que seguro que tenemos la contrasena de root, por experiencia no resulta tan facil. Una cantidad de problemas se derivan de las versiones de SQL como de los systemas operativos que los albergan.

No estoy tratando aqui de competir contra las instrucciones de Oracle o MDB. Sino que documento aqui como resolví mis propios problemas, para tenerlo a mano en caso de volver a necesitarlo y ademas que si a alguien le sirven, me alegra.

service mysql stop
mysqld_safe --skip-grant-tables --skip-networking &

mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.28-MariaDB-0+deb8u1 (Debian)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
ERROR 1131 (42000): You are using MariaDB as an anonymous user and anonymous users are not

 Ujum... entonces pruebo toda la session desde el comienzo con root:

 service mysql stop
 mysqld_safe --skip-grant-tables --skip-networking &
 mysql -u root 
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
ERROR 1131 (42000): You are using MariaDB as an anonymous user and anonymous users are not allowed to change passwords


???  

Parece que tengo un terrible problema...
Bueno, la verdadera razon de ese problema parece residir en la configuracion original de mysql
bastante interesante es que el comando...

mysql_secure_installation

tambien me devuelve ese error:

Enter current password for root (enter for none):
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


lentamente estoy pensando en reinstalar todo, pero antes un par de tips interesantes que también encontré:
 
1.- hay un usuario debian-sys-maint que tiene privilegios elevados y puede ejecutar y configurar bases de datos, su contrasena es un texto aleatorio guardado en el archivo

/etc/mysql/debian.cnf

con él te puedes logear y resetear contrasenas

2.- Con el usuario debian-sys-maint (quizas también con otro) puedes visualizar los usuarios configurados de mysql.

select host, user, password from mysql.user; 

en esta tabla puedes ver "encriptadas" las contrasenas, esto puede ser util a pesar de todo para estar seguro de los nombres de usuario, saber si un usuario con contrasena desconocida/olvidada tiene la misma de uno que conozcamos, o para constatar si nuestro cambio o reseteo de contrasenas esta funcionando.

3.- El comando: update mysql.user set password=password('tu-contrasena') where user='root';
sirve para resetear contrasenas.

martes, 13 de diciembre de 2016

Experiencias con el Chat de solo texto Profanity

Sí yo sé: Adium y Pidgin son clase!.  Pero mi Mac no es una nave voladora que digamos. Para evitar los peges, he optado por sacar lo superfluo, entre ellos Adium.

Y es que en mi trabajo usamos un chat XMPP con el que intercambiamos texto, aunque raramente smiles y aun mas raramente documentos y menos fotos y otras multimedia. Tampoco usamos otros protocolos como gogle chat, skype, messenger o que se yo que mas que el Adium soporte.

La verdad que para ese rudimentario intercambio de texto esta el Adium no solo sobrados, sino que tambien, infrautilizado.

Por esto, decidí ponerme a buscar algo mas liviano y encontré a Profanity. Un cliente xmpp en modo consola, liviano y multiplataforma del cual quede enamorado a primera vista.

Como cualquier aplicacion de consola, hay que escribir comandos, recordarlos y saber usarlos. Por esto, y para que no se me olviden los útiles he decidido escribir un Post, con la esperanza de reutilizar el conocimiento y con que quizas tambien a otros le sirva.


Buscar ayuda:
/help   <<----- ensena una clasificacion de los comandos segun tema
/help commands <<------- ensena todos los comandos
/help comandoespecifico <<--------- muestra la ayuda para ese comando especifico
/help navegation <<---- tips de navegacion

Interface:
/beep on/off <<----- Activa / desactiva las notificaciones
/history <<--- Activa el historial (como en bash)
/clear <<--- limpiar
/flash on/off <<--- destella cuando hay un mensaje
/intype on/off <<-- dice si alguien tipea

Estatus
/away <<------ Ausente
/xa mensaje <<------ largamente ausente (extended away) con mensaje
/chat << --- disponible para chatear (ansprechbar) 
/online <<--- pone el estatus en verde y lo hace activo (verfugbar)
/dnd <<--- do not disturb, o en otras palabras nojo...
/gone 


Ventanas
/win 3 <<---- se va a la ventana y al chat #3
alt + pgd down/up <<-----  ver mas abajo o arriba de la ventana
F1... Fx <<--- ventanas 1 hasta x

Chats
/close 2 <<--- cierra la ventana 2
/join chatname <<----- entra en chatname
/msg "alguien" hola <<--- manda el mensaje
/autoconnect usuario.muestra@chat.com <<------- conecta automaticamente a usuario.muestra al iniciar
/roster add fulanito@chat.com <<-- agrega a fulanito a tus amigos
/roster remove fulanito@chat.com <<-- lo saca

Control
/quit << salir

/script run nombredelscript <<------
ejecuta un script que debe estar guardado en ~/.local/profanity/scripts y que utiliza los comandos de la consola de profanity como lenguaje. Muy útil para configuraciones previas, para mi por ejemplo me sirvio para unirme a todos los chat al empezar la sesion poniendo en el script "inicio" los siguiente
/join chat1
/join chat2

Archivos de configuracion:
EN MAC, tiene profanity 2 directorios importantes:
~/.config/profanity
...  profrc <<--- tiene casi el mismo contenido de un tema, con algunas variaciones
~/.local/profanity

Los Temas (theme)

son una cosa bien importante como poderosa. Podemos listar los temas disponibles con
/theme list
para cambiarlo basta:
/theme load nombredeltema

los temas disponibles se deben guardar en:
~/.config/profanity/themes
aunque los del systema estan en la instalacion del programa:
/usr/local/cellar/profanity/0.5.0/share/profanity/theme

si no encuentras nada alli, es porque es la carpeta para tus temas y no para los que vienen por defecto.
Se pueden bajar temas desde el git del autor:
https://github.com/boothj5/profanity/tree/master/themes

puedes probarlos con "theme load" y comenzar a editar el que mas te guste.

los colores aceptados son:

white bold_white black bold_black
yellow bold_yellow bold_green green blue bold_blue red bold_red
cyan bold_cyan magenta bold_magenta
             
el orden es según mi lógica como armonizan mejor










jueves, 1 de diciembre de 2016

instalaciones de paquetes de software con github

desde que existe github existe con él una nueva alternativa para la instalacion de software que debemos manejar exactamente bien como en el caso de yum, apt-get, aptitude y demas.

la instalacion con github tiene la ventaja de no sobreescribir todos los paquetes sino que analiza primero las alternativas.

Esto puede ser util cuando trabajamos con un software de codigo abierto que editamos a nuestro gusto y del cual queremos editar solamente los archivos que nosotros no editamos.

Basicamente el comando git, copia o "Clona"  el contenido del repositorio Web de Github en nuestra computadora objeto.

El siguiente comando clonará el depositorio de cowsay en un directorio llamado "cowsay" en el directorio activo donde nos encontremos para

git clone git://github.com/schacon/cowsay

El resto dependerá de la forma en que este software se instale, para el caso de cowsay, se ejecuta despues un script install.sh y ya.

Un articulo mucho mas extenso sobre el tema, el cual inspiró este minihow, se puede encontrar en

https://www.lifewire.com/installing-software-using-git-3993572


jueves, 20 de octubre de 2016

el comando find

el comando find se diferencia del comando grep en que el primero busca ficheros en el directorio mientras que el segundo busca cadenas de texto dentro de archivos

find puede encontrar directorios o archivos con la opcion
-type d
-type f

. significa directorio activo
/ significa directorio raiz
y por supuesto todas sus variantes como /home/desktop/etcymas

-name archivo.txt

pero tambien sirvern aqui los comodines o wildcards *

tambien tenemos la opcion ignora el nombre para
-iname archivo.txt
donde find no va a encontrar este nombre

con los comodines entonces podemos encontrar todos los archivos de scripts de pyton ignorando los que pertenecen a test asi:

find / -type f -name *.py -iname test*.py

find tambien nos permite encontrar segun permisos

find . -perm 777 -print
./logfile.001

Virtualizacion con KVM

No voy a discutir porque KVM y no XEN o VMWare. He tenido que usar KVM!

La interfaz me ha parecido espartana como un kernel solitario de linux en su version mas primitiva.

No es tan verdad, puesto que kvm cuenta con un interprete de comando llamado virsh que es bastante poderoso.

Pero cuando te acostumbras al clickliclicki con XEN o VMWare, y tienes que usar KVM te parece un viaje en la historia al pasado.

El manejo de KVM es casi obligatorio a traves de ssh y la consola virsh, porque el unico manager con interface para clientes corre solo en linux de manera nativa. Pero tampoco es tan malo: con una maquina virtual local se puede installar un linux rudimentario que corra puro virt-manager en windows, y en mac hay algunas recetas para brew que con sudor sangre y lagrimas funcionaran despues de algunos dias :-)

La instalacion en Ubuntu es mas o menos asi

sudo apt install qemu-kvm libvirt-bin
 
sudo apt install virtinst


el usuario que va a trabajar con libvirtd debe pertenecer al grupo, para saber si esta
bastara

groups username

si libvirtd no esta en la lista deberemos agregarlo con:

sudo adduser username libvirtd