명령 행에서 LUKS 마운트


11

에 때 nautilus또는 caja내가 암호화 된 디스크의 아이콘을 클릭하고 비밀번호를 입력, 기본 블록 장치가 매핑됩니다 /dev/mapper/luks-$UUID및이에 설치됩니다 /media/$USER/$DISK, 어떤 루트 암호가 필요하지 않습니다. sudo를 제거하고 마운트 지점을 GUI에서 다시 마운트 해제 할 수 있도록하는 등 GUI없이 명령 행에서이 프로세스를 호출하는 방법이 있습니까?


확실하지 않고 (따라서 답변이 아닌 의견) GUI가 udisks(또는 udisks2)을 통해이 작업을 수행한다고 생각합니다 . CLI 유틸리티에서 옵션을 조사하면 추가 답변이 제공 될 수 있습니다.
wraeth

또한 처음으로 비밀번호를 입력하고 로그인 키링에 저장하도록 선택할 수 있습니다. 따라서 기술적으로는 않는 암호를 사용하지만, 당신이 그것을 볼 수 없습니다, 그래서 그 작업은 자동으로 수행.
13

답변:


12

이 작업을 수행하는 단일 명령 방법을 모르겠습니다. GUI 프로그램은 "올바른"접근 방식을 취하기 위해 디스크에 대해 약간의 심문을하고 있으며, 그 중 일부를 직접 수행해야합니다. 그래도 sudo가 필요하지 않으며 결과적으로 발생하는 일련의 이벤트는 비교적 고통스럽지 않다고 생각합니다.

짧은 대답

패키지 udisksctl에서 사용 udisks2:

udisksctl unlock -b /path/to/disk/partition
udisksctl mount -b /path/to/unlocked/device

위의 작업을 수행하려면 사용자 계정에 적절한 권한이 있어야합니다. 데비안과 우분투에서는 계정을 plugdev그룹에 추가하는 것을 의미합니다 .

디스크 작업이 끝나면 :

udisksctl unmount -b /path/to/unlocked/device
udisksctl lock -b /path/to/disk/partition
udisksctl power-off -b /path/to/disk/or/partition

상황을 설정하는 방법

다음은 명령 줄을 통해 디스크를 사용하는 과정을 최대한 쉽게 수행 할 수 있도록 설정하는 방법입니다. USB 드라이브 전체를 단일 파일 시스템으로 사용한다고 가정하겠습니다. 다른 구성에서는 지침을 수정해야합니다. 변형에 대한 경고 : 권한이없는 계정이 모든 것을 분리 할 수 ​​있도록 암호화 된 컨테이너에서 LVM을 사용하는 방법을 찾지 못했습니다. (을 통해 볼륨 그룹을 비활성화하는 방법이 보이지 않습니다 udisksctl.)

설명을 위해 디스크가이라고 말합니다 /dev/sda. 나중에 쉽게 참조 할 수 있도록 파일 시스템의 이름이 필요합니다. " example"를 사용하겠습니다 .

디스크 파티션

sudo parted /dev/sda다음 명령을 실행 하고 실행하십시오.

mklabel gpt
mkpart example-part 1MiB -1s
quit

mkpart명령은 매개 변수를 약간 조정하라는 메시지를 표시합니다. 권장 번호를 수락해도됩니다.

이제 파티션을 통해 사용할 수 있습니다 /dev/disk/by-partlabel/example-part.

LUKS 파티션 생성 및 마운트

sudo cryptsetup luksFormat /dev/disk/by-partlabel/example-part

프롬프트를 진행하십시오.

sudo cryptsetup luksOpen /dev/disk/by-partlabel/example-part example-unlocked

이제 암호화 된 장치를에서 사용할 수 있습니다 /dev/mapper/example-unlocked. 이것은 영구적 인 것이 아닙니다. 설정 과정만을위한 것입니다.

파일 시스템 만들기

사용중인 파일 시스템이 XFS라고 가정합니다. 다른 기존 파일 시스템과 거의 동일한 방식으로 작동합니다. 중요한 것은 나중에 참조 할 수있는 레이블을 추가하는 것입니다.

sudo mkfs -t xfs -L example /dev/mapper/example-unlocked

파일 시스템의 블록 장치는 이제를 통해 액세스 할 수 있습니다 /dev/disk/by-label/example.

파일 시스템 권한 설정

기본적으로 파일 시스템은 루트를 통해서만 액세스 할 수 있습니다. 대부분의 경우 사용자 계정으로 파일에 액세스 할 수 있습니다. 계정 이름이 " user" 라고 가정합니다 .

udisksctl mount -b /dev/disk/by-label/example
sudo chown user:user /media/user/example

모든 것을 닫으십시오

udisksctl unmount -b /dev/disks/by-label/example
sudo cryptsetup luksClose example-unlocked

파일 시스템 사용

이것이 당신이 정기적으로 할 일입니다. USB 드라이브를 연결 한 후

udisksctl unlock -b /dev/disks/by-partlabel/example-part
udisksctl mount -b /dev/disks/by-label/example

사용자 계정이 " user"이면 파일 시스템이에 마운트됩니다 /media/user/example.

파일 시스템을 마운트 해제하려면

udisksctl unmount -b /dev/disks/by-label/example
udisksctl lock -b /dev/disks/by-partlabel/example-part
udisksctl power-off -b /dev/disks/by-partlabel/example-part

이제 USB 드라이브를 분리 할 수 ​​있습니다.


"파일 시스템 사용"섹션 인 github.com/JerichoJyant/usbkey 를 자동화하고 단순화하는 오픈 소스 bash 스크립트를 만들었습니다 . USB 플래시 드라이브 용으로 설계되었습니다. 여기에 설명 된 설정을 스크립트에도 통합 할 계획입니다.
Josh Patton

3

asciiphil대답내가 옳은 것처럼 보이므로 그렇게 표시해야합니다.

"이 작업을 수행하는 단일 명령 방법을 모르겠습니다." 나는 또한 해당 기능 요청을 열지 않았습니다 . 이 문제를 해결하기 위해 래퍼 스크립트를 만들어 파티션을 잠금 해제하고 마운트하는 단일 명령 방법을 제공 할 수 있습니다.

Bash를 사용한다고 가정하면 아래 스크립트를 다음과 같이 저장하십시오. 예를 들어 unlock-and-mount, 스크립트를 실행 가능하게 만들고의 디렉토리에 넣으십시오 PATH. 그런 다음로 한 단계로 장치를 잠금 해제하고 마운트 할 수 있습니다 unlock-and-mount /dev/disk/by-id/my-device-part-X.

경고 : 이것은 메시지 udisksctl전송을 표준 출력 으로 구문 분석 하고 udisksctl명령 행 인터페이스 의 안정성에 의존합니다 . udisksctl man page 에 따르면 이것은 깨지기 쉽습니다 .

[이] 프로그램은 스크립트 나 다른 프로그램에서 사용하기위한 것이 아닙니다. 옵션 / 명령은 향후 유지 관리 릴리스에서도 호환되지 않는 방식으로 변경 될 수 있습니다.

그 동안 여기에 현재 작동하는 스크립트가 있습니다.

#!/usr/bin/env bash
# A convenience wrapper around `udisksctl`.

# Trace execution 
set -x

# Abort on errors. (I find this helpful, despite the cautions given in
# http://mywiki.wooledge.org/BashFAQ/105 and
# http://mywiki.wooledge.org/BashFAQ/112 .)
set -e
set -u

# Define functions
die () {
    echo >&2 "$@"
    exit 1
}

# Validate input argument(s) 
[[ "$#" -eq 1 ]] || die "Exactly 1 argument required: path to partition ID. $# given"
[[ -b "$1" ]]    || die "$1 is not a block device"
[[ "$1" == /dev/disk/by-id/* ]] || die "$1 does not begin '/dev/disk/by-id/'"

# Unlock partition
unlockedpart="$(udisksctl unlock -b "$1" |\
 tail -n1 |\
 sed -e 's/^Unlocked \/dev\/[[:print:]]\+ as \([[:print:]]\+\).$/\1/' \
)"

# Mount unlocked partition
udisksctl mount -b "$unlockedpart"

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