実行してsudo bash
から、ecryptfs-recover-private
(sudoではなく)rootとして実行すると機能することがわかりました。なぜ違うのかわからない。
編集:
TL; DR:
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase - | ecryptfs-add-passphrase --fnek -
< Type your login password here >
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
プロンプトは表示されず、上記のコマンドにログインパスワード(blind)を入力する必要があります。
交換aaaaaaaaaaaaaaaa
及びbbbbbbbbbbbbbbbb
ために、以下上記の出力から、括弧の間に六角署名付き:
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
予選
私にとってrootは確実に機能しなかったので、それはただ実行されていることがわかりました。時々それはしました、時にはしませんでした。基本的に、ecryptfsはバグが多く、非常にユーザーフレンドリーではないようです。ログインパスワードとマウントパスフレーズを混乱させることがよくあります。深くて暗いうさぎの穴を下った後、私は役立ついくつかのヒントを持っています。これらのノートはUbuntu 17.10、ecryptfs-utils 111-0に関するものであり、開始する前にrootになる必要があります。/mnt/crypt
(すでにマウントされているはずの)ホームディレクトリをにマウントし、ユーザー名に/mnt/plain
置き換える必要があると仮定しますuser
。
簡単に始める
最初に試すことは:
# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private
これがうまくいけば、幸運です。そうでない場合は、mount
約からエラーメッセージが表示されることがありno such file or directory
ます。これは非常に誤解を招く可能性があります。実際に意味することは、マウントパスフレーズが間違っているか欠落しているということです。
署名を取得する
ここで重要な部分です。ecryptfsが実際に正しいマウントパスフレーズを試行していることを確認する必要があります。ecryptfsがファイルシステムをマウントする前に、パスフレーズをLinuxカーネルにロードする必要があります。ecryptfsはカーネルに署名によってそれらを要求します。署名は16バイトの16進値です(暗号化の影響を受けません)。ecryptfsが期待しているパスフレーズ署名を見つけることができます:
# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
これらを覚えておいてください。目標は、これらの署名を含むパスフレーズをカーネルにロードし、ecryptfsにそれらを使用するように伝えることです。最初の署名(aaaaaaaaaaaaaaaa
)はデータ用で、2番目の署名()はbbbbbbbbbbbbbbbb
FileName暗号化キー(FNEK)です。
マウントパスフレーズを取得する
次のコマンドは、ログインパスワードを要求し(誤解を招くプロンプトを表示)、マウントパスフレーズを出力します。
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase
これをコピーしますが、注意してください!! 、これは非常に暗号的に敏感なので、王国への鍵です。
インタラクティブなマウントを試す
次に試すことは:
# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
ここで重要なことはmount
、(ログインパスワードではなく)先ほどコピーした(非常に機密性の高い)マウントパスフレーズが必要であることです。
これにより、いくつかの質問が表示され、「はい」と答える以外はデフォルトを受け入れることができますEnable filename encryption
。警告が表示され、署名をキャッシュするように求められる場合があります。両方に「はい」と言ってもかまいませんが、正しいマウントパスフレーズがあることを再確認してください。
mount
試してみることにしたオプションが表示されます。
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=aaaaaaaaaaaaaaaa
Mounted eCryptfs
シグニチャーが間違っている場合(から取得したものと一致しない場合Private.sig
)、マウントは機能しません。
...しかし、それはそうしたことを非常に役に立たないように報告するでしょう。あなたは何をする必要がありますls /mnt/plain
ことを確認すると猫のファイルを。この時点で/var/log/syslog
、ecryptfsが同じ署名を探しているかどうかを調べて確認することもできます。
ここにecryptfsには明らかに2つの深刻な問題があり、それらを回避する必要があります。
カーネルにキーをロードする
対話型マウントが役に立たなかった場合は、キーをカーネルに自分でロードし、マウントオプションで手動で指定する必要があります。
# ecryptfs-add-passphrase --fnek
そして、上からコピーした(超機密の)マウントパスフレーズを貼り付けます。これは出力するはずです:
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
手動でマウント
これで、パスフレーズがカーネルに読み込まれ、mountにそれらを使用するように指示するだけです。
# umount /mnt/plain
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
オプションは、インタラクティブマウントが出力したものと似ていますが、ecryptfsに手動で何が起こっているのかを伝えている点が異なります。
うまくいけばこれはうまくいきます。そうでない場合は、を使用して、キーが正しい署名とともにカーネルにロードされていることを確認できますkeyctl list @u
。これにより、少なくとも2つの署名が期待されているはずです。
ecryptfs-recover-private
出力がmount(2)エラーを出力する場合の回避策があります。実行してsudo ecryptfs-manager
4(終了)を押してから、元のを再度実行してくださいecryptfs-recover-private
。今すぐ機能するはずです