USB 드라이브의 경우버전 2.6.4그 다음에

USB 드라이브의 경우버전 2.6.4그 다음에

현재 암호화된 썸 드라이브를 마운트하려면 다음을 수행합니다.

# Works!
pass thumbdrive-password | # get device password entry from password manager
    head -n 1 | # get the device password itself
    sudo cryptsetup luksOpen /dev/sdb thumbdrive # unlock device
udisksctl mount -b /dev/mapper/thumbdrive # mount device

나는 이런 일을하고 싶다 :

# Does not work!
pass thumbdrive-password |
    head -n 1 |
    udisksctl unlock -b /dev/sdb # unlock device
udisksctl mount -b /dev/mapper/luks-foobar # mount device with uuid "foobar"

이렇게 하면 반 권한이 있는 사용자( org.freedesktop.udisks2.filesystem-mountpolkit의 권한이 있는)가 sudo를 사용하지 않고 암호화된 파일 시스템을 마운트할 수 있습니다. Udisk는 대화형 암호 프롬프트를 사용하기 때문에 이 파이프 방법을 허용하지 않습니다. udisksctl unlock수동으로 입력하지 않고 장치 비밀번호를 제공하려면 어떻게 해야 합니까 ?

답변1

USB 드라이브의 경우버전 2.6.4그 다음에

노트:나는 이것을 테스트하지 않았습니다. 일단 udisk 2.6.4를 얻으면 그럴 것입니다(언제든지https://github.com/NixOS/nixpkgs/pull/41723NixOS 안정 버전으로 백포트되었습니다).

고쳐 쓰다:이제 udisks 2.8.0이 있으므로 솔루션을 테스트할 수 있습니다. 내가 놓친 유일한 것은 pass (...) | head (...). 이를 자르려면 -n플래그를 사용 echo하거나 출력 | tr -d '\n'에 추가하십시오. head나는 이것을 아래의 두 가지 솔루션에 반영했습니다.

일반(안전하지 않은) 솔루션

--key-file플래그를 사용하고 키 파일을 비밀번호 문자열로 바꾸십시오. /dev/sdb비밀번호로 잠금 해제 hunter2:

udisksctl unlock --block-device /dev/sdb --key-file <(echo -n "hunter2")

명령줄을 통해 민감한 데이터를 직접 전달하는 것은 안전하지 않으므로 이 방법은 피해야 합니다.

pass구현하다

대신, 비밀번호 문자열을 검색하고 pass thumbdrive-password | head -n 1, 후행 줄바꿈을 자르고, 다음을 사용하여 이를 키 파일로 바꾸세요.

udisksctl unlock \
    --block-device /dev/sdb \
    --key-file <(pass thumbdrive-password | head -n 1 | tr -d '\n')

답변2

문제는 데이터가 제어 터미널에서 읽히지 않고 stdin다음에서 읽혀진다는 것입니다.

잠금 해제
암호화된 장치를 잠금 해제합니다. 비밀번호는 제어 터미널에서 요청되며 성공적으로 완료되면 일반 텍스트 장치가 표준 출력으로 인쇄됩니다.

Frost가 제안한 해결 방법을 사용하거나 또는 사용과 같은 트릭을 사용하여 파이프 입력이 제어 터미널에 표시되도록 할 수 있습니다 expect.socat

pass thumbdrive-password |
    head -n 1 |
    socat - EXEC:'udisksctl unlock -b /dev/sdb',pty,setsid,ctty

답변3

기여하기에 너무 늦은 때는 없습니다. #sudo apt-get install udisks2-lvm2를 실행하면 자동으로 설치됩니다. 쿠분투 20.4 - 1TB SATA 디스크용 USB 어댑터.

관련 정보