명령 행에서 LUKS 마운트 설치됩니다 /media/$USER/$DISK, 어떤 루트 암호가 필요하지 않습니다.

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



답변

이 작업을 수행하는 단일 명령 방법을 모르겠습니다. 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 드라이브를 분리 할 수 ​​있습니다.


답변

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"

답변

이것은 노틸러스 / 네모가 저장 한 키를 사용합니다 :
gio mount -d /dev/dm-x

자세한 내용 은이 답변을 참조하십시오 .