Хранение файла в оперативной памяти с Bash - возможно?

StackOverflow https://stackoverflow.com/questions/8376610

Вопрос

Я собираюсь зашифровать свой жесткий поход, используя 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

Кажется довольно просто, чтобы создать себе небольшой раздел и использовать его. Если ваш сценарий создаст крепление на лету, он должен будет работать как корень.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top