Enregistrement d'un fichier dans la mémoire vive avec bash - possible?
-
28-10-2019 - |
Question
Je vais chiffrer mon disque dur avec LUKS avec Arch Linux; Normalement, vous utilisez soit un fichier de clés ou un mot de passe pour déverrouiller des volumes chiffrés, mais je veux exiger à la fois.
# If keyfile exists, try to use that
if [ -f ${ckeyfile} ]; then
if eval /sbin/cryptsetup --key-file ${ckeyfile} luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; then
dopassphrase=0
else
echo "Invalid keyfile. Reverting to passphrase."
fi
fi
# Ask for a passphrase
if [ ${dopassphrase} -gt 0 ]; then
echo ""
echo "A password is required to access the ${cryptname} volume:"
#loop until we get a real password
while ! eval /sbin/cryptsetup luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; do
sleep 2;
done
fi
if [ -e "/dev/mapper/${cryptname}" ]; then
if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
export root="/dev/mapper/root"
fi
else
err "Password succeeded, but ${cryptname} creation failed, aborting..."
exit 1
fi
Le code ci-dessus gère le déchiffrement d'un volume, comme vous pouvez le voir vérifie si le fichier clé est valide et revient à passphrase si ce n'est pas. Mon idée de se déplacer est de prendre KeyFile et un mot de passe, ajouter les valeurs de ces ensemble et créer un nouveau fichier clé qui ouvre le volume. Le problème est que je ne sais pas où enregistrer le fichier, je l'ai pensé à sauver dans la RAM, mais je ne sais pas si cela est possible avec bash.
if poll_device "${cryptdev}" ${rootdelay}; then
if /sbin/cryptsetup isLuks ${cryptdev} >/dev/null 2>&1; then
[ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
if [ -f ${ckeyfile} ]; then
bool=true
while $bool; then
echo "Enter passphrase: "
read passphrase
tmpkey="tmpkeyfile"
cp ${ckeyfile} ${tmpkey} #Create a temporary keyfile
echo passphrase >> ${tmpkey} #Add the passphrase to the keyfile
if eval /sbin/cryptsetup --key-file ${tmpkey} luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; then
bool=false
Le code ci-dessus est ce que j'avais à l'esprit, je n'ai pas essayé le code comme je l'ai pas eu l'occasion, mais je ne pense pas qu'il est assez sûr pour juste sauver KeyFile temporaire sur le disque dur. < br>
Je ne sais pas bash très bien, donc il pourrait y avoir quelques erreurs ici et là. Mais je voulais juste montrer mon idée de la façon de résoudre le problème, peut-être quelqu'un peut me aider à obtenir réellement travailler.
Est-il possible de stocker le fichier clé dans la RAM, ou y at-il d'autres alternatives?
La solution
Je pense que ce que vous cherchez peut-être est SHM / shmfs, ou autrement connu sous le nom tmpfs.
Voici quelques liens qui parlent en utilisant SHM / tmpfs et comment le monter et le fixer
http: //www.cyberciti. biz / conseils / what-is-devshm-et-son-pratique-usage.html
https://wiki.archlinux.org/index.php//dev/ SHM
Il semble assez simple avant de vous créer une petite partition et de l'utiliser. Si votre script va créer le monter à la volée, il devra fonctionner en tant que root.