Хранение файла в оперативной памяти с Bash - возможно?
-
28-10-2019 - |
Вопрос
Я собираюсь зашифровать свой жесткий поход, используя Luks с Arch Linux; Обычно вы используете либо файл ключа, либо пассис, чтобы разблокировать зашифрованные объемы, однако я хочу требовать оба.
# 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
Приведенный выше код обрабатывает расшифровку тома, так как вы можете видеть, что он проверяет, является ли файл ключа действителен, и возвращается к пассивной фразе, если это не так. Моя идея обойти это состоит в том, чтобы взять файл ключа и пассис, добавить значения их вместе и создать новый файл ключа, который открывает громкость. Проблема в том, что я не знаю, где сохранить файл, я думал о том, чтобы сохранить его в оперативной памяти, но я не знаю, возможно ли это с 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
Приведенный выше код - это то, что я имел в виду, я не пробовал код, так как у меня не было возможности, но я не думаю, что он достаточно безопасен, чтобы просто сохранить временный файл ключа на жестком плане.
Я не очень хорошо знаю, поэтому здесь и там могут быть некоторые ошибки. Но я просто хотел показать свою идею о том, как решить проблему, может быть, кто -то может помочь мне, чтобы она действительно работала.
Можно ли хранить ключевой файл в оперативной памяти, или есть другие альтернативы?
Решение
Я думаю, что вы, возможно, искали, это SHM / SHMFS или иным образом известно как TMPFS.
Вот несколько ссылок, которые говорят об использовании SHM / TMPFS, о том, как его установить и закрепить
http://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html
https://wiki.archlinux.org/index.php//dev/shm
Кажется довольно просто, чтобы создать себе небольшой раздел и использовать его. Если ваш сценарий создаст крепление на лету, он должен будет работать как корень.