Restricciones de password en EAP 6/7

 

Hace tiempo que no posteo trucos, pero aquí va uno.
JBoss EAP 6/7 ofrece el script `add-user.sh` para la creación de usuarios administrativos o de aplicaciones.

Al solicitar el password, requiere uno con:

  1. Más de 8 caracteres
  2. Al menos una mayúscula
  3. Al menos un dígito
  4. Al menos un caracter no alfanumérico

El script genera una huella md5 codificada en base hexadecimal de la siguiente cadena “username:realm:password”, que guarda en el fichero de properties correspondiente mgmt-users.properties o app-users.properties
Bien, pues con la siguiente instrucción de python podremos generar una huella que podremos guardar manualmente y crear una password no sometida a las restricciones del script


python -c 'import hashlib; print hashlib.md5("username:realm:password").hexdigest()'

Todo ello con propósito de pruebas. ¡¡ NO APLICAR EN PRODUCCIÓN !!

Parted, GPT y LVM

Las limitaciones de la tabla de particiones IBM, limita a un máximo de 4 particiones primarias. Para poder disponer de más particiones, se implementó la partición “extendida” que permitía contener referencias a particiones lógicas, de ese modo podemos disponer de hasta un máximo de 15 particiones (3 primarias, 1 extendida y 11 lógicas).
Aún así, tenemos una pega, debido a que el tamaño de la partición se guarda en sólo 3 bytes, queda limitado a un máximo de 2TiB por partición.
Por ello es necesario usar otra tabla de particiones, la tabla GUID(GPT).
En esta tabla, podremos disponer de un máximo de 128 particiones, por lo que eliminamos la necesidad de crear particiones extendidas y lógicas. Además incrementamos el tamaño de la partición a 8ZiB.

EL comando fdisk sólo nos permite gestionar tablas de particiones IBM, así que si queremos crear y gestionar la tabla de particiones GPT deberemos utilizar la aplicación parted.

Abajo describo una  referencia práctica de uso de parted:

Con esto abrimos la aplicación parted sobre el dispositivo /dev/sda

image

Ahora vamos a crear la tabla de particiones GUID(GPT)

image

Creamos una primera partición de 200MB

image

Como será la partición de arranque, debemos aplicar el “flag” de boot

image

Voy a crear una partición que ocupe el resto del disco

image

Y voy a marcarla para trabajar con LVM

image

La versión de parted incluída en RHEL, todavía no tiene soporte para formatear sistemas de ficheros ext4, por lo que debemos darle formato desde la línea de comandos

image

En último lugar, preparo la estructura LVM para disponer de un esquema para una instalación básica:

image

Listo, ahora a instalar el sistema.

Resetear password de root

Bueno, este es una de esas tareas que todo administrador debe conocer al dedillo, bien porque se olvide de la contraseña o bien porque hayan vulnerado el sistema y cambien el password de root.

Durante el proceso de arranque, en la selección de kernel, podemos agregar parámetros al mismo para alterar el comportamiento del mismo. Uno de estos parámetros puede ser el runlevel.
Cuando aparezca la selección del kernel en el grub, debemos pulsar la tecla ESC para detener el timeout. En el menú resaltamos el kernel con las flechas up/down. Una vez elegido el kernel pulsamos la tecla “a” para agregar el parámetro “1” al final de la línea. Este parámetro arrancará nuestro sistema en runlevel 1, donde estaremos logueados como root sin necesidad de introducir password.
Una vez nos haya levantado la shell sólo hace falta ejecutar el comando passwd y elegir el nuevo password d root.

En RHEL 6, debido a SELinux, antes de cambiar el password debemos desactivar SELinux, así que ejecutaremos “setenforce 0

Ahora sólo nos hace falta ejecutar “init 3” para levantar todos los servicios o “init 5” para levantar el escritorio.

Resetear Terminal

¿Has intentado alguna vez visualizar un archivo binario o examinar el contenido de un jpg?
Cuando realizas alguna tarea similar a la anterior, la terminal se quedará con otro juego de caracteres y sueles cerrarla y volver a abrir para que se restaure.
Si te ha pasado esto varias veces, habrás descubierto el comando reset.
Pues por aquí tienes un truquito, si presionas ctrl+v ctrl+o obtendrás el mismo resultado.
Pero ¿y si a tu variable de prompt PS1 le integras la secuencia de comandos?
Es decir PS1=”[\u@\h \W]\\$ ^O
De este modo jamás se te volverá a quedar la terminal “rota”.

Commentarios

Como usuario Linux, sabrás que para crear una línea de comentarios en un script debes comenzar con #

Pero, ¿sabías que también lo puedes hacer en la línea de comandos, y que además queda almacenado en el histórico de comandos?

¡Anda, mola! Y esto, ¿a mí de que me sirve?

Con la combinación ctrl-r iniciamos una búsqueda recursiva en el histórico de comandos; pues si en la línea de comandos al final añadimos #etiqueta, podremos buscar nuestro comando simplemente escribiendo en la búsqueda recursiva la etiqueta.

$ dd if=/dev/zero of=/tmp/fichero bs=1k count=1M #relleno

(reverse-i-search)`relleno’: dd if=/dev/zero of=/tmp/fichero bs=1k count=1M #relleno

Replace

De estas veces que estás empecinado escribiendo una línea de código enorme y sólo al pulsar la tecla intro te das cuenta que hay algo mal escrito, entonces pulsas flecha arriba para retomar el último comando del historial y despues te vas moviendo caracter a caracter hasta cambiar el código. Pero, ¿y si son varias palabras( vease el nombre de un archivo/directorio)? Pues aquí va el truquillo:

# cp /home/user/tips/ficero.txt /var/ftp/pub

> Error: no se encuentra ficero.txt

# ^ficero^fichero

Con el comando en negrita cambiamos en la ejecución del comando anterior la cadena ficero por la cadena fichero

 

# cp /home/user/tips/ficero1 /home/user/tips/ficero2 /home/user/tips/ficero3 /home/user/tips/ficero4 /home/user/tips/ficero5 /var/ftp/pub

En este caso el truco anterior sólo cambiaría ficero1 por fichero1, mientras que el resto permanecerían como ficeroX. Para ello debemos emplear otra técnica:

# !!:gs/ficero/fichero

Con esto conseguimos en el último comando ejecutado, sustituir todas las concordancias de la cadena ficero por la cadena fichero.

Nota Importante: Sustituye cadenas enteras, pueden tener espacios o caracteres especiales, pero no acepta expresiones regulares.

Zenity

Podemos utilizar Zenity, que es el gestor de mensajes en GNOME, para crear listas de selección.

Seleccionar un elemento y guardarlo en una variable

VARIABLE=$(zenity –list –radiolist –height=325 –width=325 –title=”¿Qué opción eliges?” –column=”Selecciona uno” –column=”Valores” FALSE “Valor1” FALSE “Valor2” FALSE “Valor3” etc… )

#!/bin/bash

until [ “$VARIABLE” == “Valor1″ ]
do

VARIABLE=$(zenity –list –radiolist –height=325 –width=325 –title=”¿Qué opción eliges?” –column=”Selecciona uno” –column=”Valores” FALSE “Valor1” FALSE “Valor2” FALSE “Valor3”)

done