에 때 nautilus
또는 caja
내가 암호화 된 디스크의 아이콘을 클릭하고 비밀번호를 입력, 기본 블록 장치가 매핑됩니다 /dev/mapper/luks-$UUID
및이에 설치됩니다 /media/$USER/$DISK
, 어떤 루트 암호가 필요하지 않습니다. sudo를 제거하고 마운트 지점을 GUI에서 다시 마운트 해제 할 수 있도록하는 등 GUI없이 명령 행에서이 프로세스를 호출하는 방법이 있습니까?
에 때 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
.
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
자세한 내용 은이 답변을 참조하십시오 .
udisks
(또는udisks2
)을 통해이 작업을 수행한다고 생각합니다 . CLI 유틸리티에서 옵션을 조사하면 추가 답변이 제공 될 수 있습니다.