Memorizzazione di un file in RAM con bash - possibile?
-
28-10-2019 - |
Domanda
Ho intenzione di crittografare il mio harddrive usando Luks con Arch Linux; Normalmente usi un file key o una passphrase per sbloccare i volumi crittografati, tuttavia voglio richiedere entrambi.
# 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
Il codice sopra gestisce la decrittografia di un volume, come puoi vedere controlla se il file key è valido e ritorna su passphrase se non lo è. La mia idea di aggirare questo è quella di prendere un file key e una passphrase, aggiungere i valori di quelli insieme e creare un nuovo file chiave che apre il volume. Il problema è che non so dove salvare il file, stavo pensando di salvarlo in RAM ma non so se sia possibile con 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
Il codice sopra è quello che avevo in mente, non ho provato il codice perché non ho avuto l'opportunità di farlo, ma non credo che sia abbastanza sicuro da salvare il filo chiave temporaneo sul duro.
Non conosco molto bene Bash, quindi potrebbero esserci degli errori qua e là. Ma volevo solo mostrare la mia idea di come risolvere il problema, forse chiunque può aiutarmi a farlo funzionare davvero.
È possibile archiviare il file key in RAM o ci sono altre alternative?
Soluzione
Penso che quello che potresti cercare sia SHM / SHMFS o altrimenti noto come TMPFS.
Ecco un paio di link che parlano dell'utilizzo di SHM / TMPFS e su come montarlo e fissarlo
http://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html
https://wiki.archlinux.org/index.php//dev/shm
Sembra piuttosto semplice per creare una piccola partizione e usarla. Se la tua sceneggiatura creerà il supporto al volo, dovrà funzionare come root.