마운트 : 암호화 된 복구가있는 파일 또는 디렉토리가 없음


12

Mint Linux 설치를 파괴했습니다. 원격 매장에 액세스하고 싶었습니다. 그래서 홈 디렉토리의 ICEauthority 파일에 문제가 발생했습니다. 그래서 인터넷상의 다른 지시에 따라 파일을 작동시키기 위해 홈 디렉토리를 재귀 적으로 chmod 755로 설정할 수 있다는 결론에 도달했습니다 ... 결국 시스템 로딩에 문제가 발생했습니다. 결국 홈 디렉토리를 루트에 대한 실행 권한으로 설정하면 읽기 / 쓰기 액세스 권한을 얻을 수 있었지만… 내 컴퓨터를 재설정했습니다. -이제 시스템에서 ICEauthority와 동일한 오류가 발생하지만 디스크가 암호화되어 있기 때문에 OS로 절대 들어 가지 않습니다. 내가 시도한 것이 작동하지 않는 것 같고 원래 장착 씨앗이 없습니다.

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].

가상 머신에 저장된 중요한 파일이 거기에 있기 때문에 정말 걱정됩니다 ... 그 파일에 접근 할 수 있다면 설정을 말하고 다시 시작할 수있는 자격이 없습니다.

답변:


13

sudo를 통하지 않고 루트 sudo bash로 실행 한 다음 작동 하는 것으로 나타났습니다 ecryptfs-recover-private. 왜 다른지 잘 모르겠습니다.

편집하다:

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위해 상기 출력에서의 괄호 육각 서명을 이하 :

# 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는 버그가 많고 사용자에게 친숙하지 않은 것으로 보이며, 종종 로그인 암호와 마운트 암호를 혼동합니다. 깊고 어두운 토끼 구멍을 뚫고 나면 도움이 될 몇 가지 팁이 있습니다. 이 노트는 우분투 17.10, ecryptfs-utils 111-0을위한 것이며 시작하기 전에 루트가되어야합니다. 홈 디렉토리를 /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)은 데이터에 대한 것이고 두 번째 서명 ( )은 bbbbbbbbbbbbbbbbFNEK (FileName Encryption Key)입니다.

마운트 암호 구하기

이 명령은 사용자에게 로그인 암호 (오도 메시지가 표시됨)를 요청하고 마운트 암호를 출력합니다 .

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

이것을 복사하되 조심하십시오 !! 이는 암호 해독에 매우 민감하기 때문에 왕국의 열쇠입니다.

대화식 마운트 시도

다음으로 시도해야 할 것은 :

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

여기서 중요한 것은 방금 복사 한 ( mount초 고감도) 마운트 암호 (로그인 암호가 아님) 가 필요 하다는 것입니다.

이것은 당신에게 몇 가지 질문을 할 것이고, 당신은 yes를 제외하고 기본값을 받아 들일 수 있습니다 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/syslogecryptfs가 동일한 서명을 찾고 있는지 확인할 수 있습니다 .

ecryptfs에는 두 가지 심각한 문제가 분명히 있으며, 우리는 그 문제를 해결해야합니다.

커널에 키를로드

대화식 마운트가 도움이되지 않으면 키를 커널에 직접로드하고 마운트 옵션에서 수동으로 키를 지정해야합니다.

# 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. 그러면 예상 한 두 개의 서명이 인쇄됩니다.


4
ecryptfs-recover-privatemount (2) 오류를 출력 할 때 해결 방법이 있습니다. 실행을 시도하고 sudo ecryptfs-manager4 (종료)를 누른 다음 원본을 다시 실행하십시오 ecryptfs-recover-private. 지금 작동
ulkas

1
@ulkas 왜 이것이 작동하는지 아십니까?
Turion

2
@Turion 나는 해결책을 찾아 봤기 때문에 발명가가 아닙니다. 내 생각에 ecryptfs일부 버전부터 버그가 있으며 관리자를 호출하면 나중에 mount에 의해 재사용되는 일부 변수가 설정됩니다.이를 자동화하는 방법을 생각하여 각 재부팅 후 폴더를 마운트 할 수 있습니까?
ulkas

1
keyctl link @u @s나를 위해 훨씬 간단한 해결책이었습니다. 크레딧은 여기로 가십시오 : bugs.debian.org/cgi-bin/bugreport.cgi?bug=870126
sup

내 문제는 아마도 원래의 포스터와 다를 수 있습니다.
sup

1

이 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 와 같은 것을 사용 하여 무제한 터미널에 원격으로 액세스하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.