2011-12-04 10 views
2

私はArch LinuxでLUKSを使ってハードドライブを暗号化します。通常、暗号化されたボリュームのロックを解除するには、鍵ファイルまたはパスフレーズを使用しますが、両方を要求したいと思います。あなたはキーファイルが有効であり、そうでない場合はパスフレーズに戻り場合、それはチェックし見ることができるようbashでRAMにファイルを保存する - 可能ですか?

# 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 

上記のコードは、ボリュームの復号化を処理します。これを回避する私のアイデアは、キーファイルとパスフレーズを取り、それらの値を一緒に追加し、ボリュームを開く新しいキーファイルを作成することです。問題は、ファイルを保存する場所がわからないということです。私はRAMに保存することを考えていましたが、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 

上記のコードは、私が考えていたもので、私は機会がなかったように私は、コードを試していないが、私はそれだけの一時的なキーファイルを保存するために十分に安全だとは思いませんハードドライブ。
私はbashをよく理解していないので、ここにいくつかのエラーがあるかもしれません。しかし、私はちょうど問題を解決する方法の私の考えを示すために、誰かが私が実際にそれを働かせるのを助けることができたかった。
キーファイルをRAMに保存することはできますか、それとも他の方法がありますか?

答えて

4

あなたが探しているものは、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

それを確保するためにはかなりまっすぐ前方を自分で小さなパーティションを作成するようだと、これを使って。あなたのスクリプトがその場でマウントを作成する場合は、rootとして実行する必要があります。

+0

ありがとうございます。私は/ dev/shmの使用を検討しましたが、Fedoraで見つけることができませんでしたが、私はそれをテストすることができませんでした。読んだ後、それは最良の選択のように思えます、私はそれを確認するために仮想マシンでアーチLinuxを起動します。 – Griffin

+0

/dev/shmはtmpfsのマウントで作成されました –

+0

ありがとう! '/ dev/shm'は完璧と思われます。 – Griffin

関連する問題