Soy consciente de poder utilizar el cryptsetup isLuks
comando para averiguar si una partición es un contenedor LUKS. Quiero poder usar este comando con el punto de montaje del contenedor LUKS en el caso de que no pueda estar seguro de conocer el nombre del dispositivo de la partición. ¿Cómo puedo hacer esto en un solo comando?
Por ejemplo, tengo un contenedor Luks en /dev/sda2
, lo abro con
$ cryptsetup luksOpen /dev/sda2 vault
Luego monto el contenedor con
$ mount /dev/mapper/vault /mountpoint
En este punto me gustaría saber si /mountpoint
es un contenedor Luks.
$ cryptsetup isLuks -v /dev/sda2
Command successful.
$ cryptsetup isLuks -v /mountpoint
Command failed with code 15: Block device required
$ cryptsetup isLuks -v /dev/mapper/vault
Command failed with code 22: Device /dev/mapper/vault is not a valid LUKS device.
Normalmente usaría lsblk
para obtener el dispositivo de bloque de un punto de montaje, pero esto devuelve la /dev/mapper/vault
ruta.
└─sda2 8:8 0 9.3G 0 part
└─vault 252:0 0 9.3G 0 crypt /mountpoint
Si pudiera resolverlo /dev/mapper/vault
de /dev/sda2
alguna manera, podría usar la sustitución de comandos dentro del cryptsetup isLuks
comando.
Sería genial encontrar algo más elegante que usar awk
o algo para analizar el resultado de mount
, pero si esa es la única manera, supongo que funciona.
Respuesta1
Tuve el mismo problema. Resuelto así.
lsblk -sJp | jq -r --arg dsk "/dev/mapper/disk_name" '.blockdevices | .[] | select(.name == $dsk) | .children | .[0] | .name'
Volver, por ejemplo/dev/sda2
Respuesta2
Esto debería funcionar. Es un poco largo, pero crear una función bash lo simplificaría:
cryptsetup isLuks -v `df /mountpoint | tail -n1 | awk '{print $1;}'`
Respuesta3
alguien mencionó usarlsblk
Esta es una manera relativamente fácil, pero sólo si lo haces.
alias lsblk2='lsblk -o type,name,label,partlabel,size,fstype,model,serial,wwn,uuid'
Luego, la salida de lsblk tendrá mucha información adicional útil, y FSTYPE
mostrará crypto_LUKS
y luego mostrará las particiones resultantes debajo. Y también tendrá el modelo del disco y el número de serie como referencia, lo cual me resulta útil para entender las cosas.
man lsblk
y agregue cualquier opción después -o
que pueda encontrar para que sea más útil para usted.
Creo que de esta manera... obtener una simple lista de árbol visible de todos los discos que Linux ve actualmente... es la forma más sencilla con menos escritura para saber qué discos/particiones están encriptados con luks, se mostrará como crypto_LUKS
al menos eso es lo que Veo que estoy usando RHEL 7.9.
Respuesta4
Esto funcionó para mí:
for part in $(lsblk -o NAME -ln | grep -E '^[^loop]'); do
if cryptsetup isLuks /dev/$part 2> /dev/null; then
lsblk /dev/$part -ln -o MOUNTPOINT
fi
done
El lsblk
comando solo tenía la NAME
opción, por lo que solo obtendremos el nombre de las particiones en el sistema. También -ln
abandonan el título y la forma de árbol, por lo que es una lista pura. El grep
comando es opcional, omitirá la verificación de las particiones de bucle creadas por snap. Luego otro lsblk
a la partición detectada como LUKS.
Es complicado, pero LUKS cryptsetup
funciona con particiones, no con puntos de montaje. Si va a utilizarlo dentro de un script, puede crearlo como una función para una mejor práctica.