web-dev-qa-db-ja.com

マウント:暗号化されたリカバリでそのようなファイルまたはディレクトリはありません

Mint Linuxのインストールを破棄しました。リモートストアフロントにアクセスしたいだけです。つまり、ホームディレクトリにあるICEauthorityファイルで問題が発生したのです。したがって、インターネット上のさまざまな指示に従って、ホームディレクトリを再帰的にchmod 755に設定してそのファイルを機能させることができるという結論に達しました。最終的に、システムの読み込みで問題が発生しました。最終的に、ホームディレクトリをrootの実行権限に設定することで、読み取り/書き込みアクセスを取得できましたが、その後、マシンをリセットしました。 -システムはICEauthorityで同じエラーをスローしますが、ディスクが暗号化されているため、OSにアクセスできません。私が試したことは何も機能していないようで、元のマウンティングシードを持っていません。私もSudo ecryptfs-recover-privateを試しましたが、私のシステムではそのようなファイルやディレクトリはありませんと表示されます:

frankenmint@honeybadger /home $ Sudo ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

仮想マシンに保存されている重要なファイルがそこにあったので本当に心配です...それらのファイルにアクセスできれば、設定をやり直してやり直す必要はありません。

12
Frankenmint

Sudo bashを実行し、次にecryptfs-recover-privateをrootとして(Sudoではなく)実行すると機能することがわかりました。なぜ違うのかわからない。

編集:

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

プロンプトは表示されず、上記のコマンドにログインパスワード(ブラインド)を入力する必要があります。

以下のaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbを、上記の出力からの括弧内の16進シグニチャーで順に置き換えます。

# 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)です。

マウントパスフレーズを取得する

このコマンドはloginパスワード(誤解を招くプロンプトを表示)を要求し、mountパスフレーズを出力します。

# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase

これをコピーしてください注意してください!!これは非常に暗号的に機密性が高いため、王国の鍵です。

インタラクティブマウントを試す

次に試すことは:

# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

ここで重要なのは、mountに(非常に敏感な)mount passphraseが必要であることです(ログインパスワードではなく)。

これによりいくつかの質問が表示され、デフォルトを受け入れることができますexceptEnable 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を実行し、ファイルをcatする必要があります。この時点で、/var/log/syslogを調べて、ecryptfsが私たちと同じ署名を探していることを確認することもできます。

ここにecryptfsには明らかに2つの深刻な問題があり、それらを回避する必要があります。

カーネルにキーをロードします

インタラクティブなマウントが役に立たなかった場合は、自分でカーネルにキーをロードし、マウントオプションで手動で指定する必要があります。

# ecryptfs-add-passphrase --fnek

そして、あなたの(超敏感)mount passphrase上にコピーして貼り付けます。これは出力するはずです:

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つの署名が期待されます。

13
Doctor J

このQ&Aの将来の視聴者へ:根本的な理由が異なるため、同じ明らかな症状が発生する可能性があります。症状は次のようになります。

INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

私の場合、 この答え がソリューションの鍵を握っていました。問題は、TmuxセッションでSSHを介してリモートですべてを実行しようとしていたことでした。これは、/etc/pam.d/sshdの次の行によって制限されていました。

session    optional     pam_keyinit.so force revoke

前述の回答は、その行をコメントアウトして、新しいセッションで再試行することを提案しています。

私の場合に機能した簡単な回避策は、SSHとTmuxを完全に回避して、その場所で実行することでした。より複雑な回避策(私は確認していません)は、 conspy のようなものを使用して、無制限の端末にリモートでアクセスすることです。

1
Amir