상상하다
LUKS로 암호화된 외부 장치를 사용하면 연결 시 자동으로 설치되며 부팅 시 외부 장치가 없어도 문제가 발생하지 않습니다.
이 주제에 대한 대부분의 질문은 부팅 시 설치와 관련되어 있습니다. 이는 제가 원하는 작업이 아닙니다.
또한 USB 장치가 없을 때 실수로 쓰기가 발생하지 않도록 마운트 지점을 보호해야 합니다.chattr +i <mountpoint>
질문
외부 장치가 마운트되지 않은 경우 마운트 지점에 액세스하려는 시도는 시간이 초과될 때까지 중단됩니다. 이로 인해 시스템이 불안정해질 수 있습니다.
장치가 연결되면 암호를 묻는 메시지가 표시되고 장치 잠금이 해제되지만 설치되지는 않습니다. 그런 다음 fstab 설정을 올바르게 사용하는 것처럼 보이는
mount /mnt/backup
장치를 사용하거나 수동으로 마운트해야 했습니다 .mount /dev/mapper/fit
구성
# /etc/crypttab
fit UUID=xxxxxxxx-xxxxx-xxxxxxxx-xxxxxxxxxx none luks,noauto
# /etc/fstab
/dev/mapper/fit /mnt/backup ext4 noatime,user,noauto,x-systemd.automount,x-systemd.device-timeout=5ms,x-systemd.mount-timeout=100ms 0 0
누군가 이름을 알고 싶어할 경우를 대비해 저는 우연히 Samsung Fit USB 플래시 드라이브를 가지고 있습니다.
외부 장치가 없을 때 마운트 지점에 액세스
# Accessing the mountpoint when the drive is NOT plugged in
andy@pop-os:mnt$ ll
ls: cannot access 'backup': No such device
total 0
d????????? ? ? ? ? ? backup/
andy@pop-os:mnt$ mountpoint /mnt/backup
/mnt/backup is a mountpoint
# journalctl
Jan 21 16:33:34 pop-os systemd[1]: mnt-backup.automount: Got automount request for /mnt/backup, triggered by 5192 (ls)
Jan 21 16:33:34 pop-os systemd[1]: dev-mapper-fit.device: Job dev-mapper-fit.device/start timed out.
Jan 21 16:33:34 pop-os systemd[1]: Timed out waiting for device /dev/mapper/fit.
Jan 21 16:33:34 pop-os systemd[1]: Dependency failed for /mnt/backup.
Jan 21 16:33:34 pop-os systemd[1]: mnt-backup.mount: Job mnt-backup.mount/start failed with result 'dependency'.
Jan 21 16:33:34 pop-os systemd[1]: dev-mapper-fit.device: Job dev-mapper-fit.device/start failed with result 'timeout'.
정상적인 제거 과정
# Absolute path is required if not using sudo (`user` was set in fstab)
andy@pop-os:mnt$ umount /mnt/backup
andy@pop-os:mnt$ sudo cryptsetup close fit
andy@pop-os:mnt$ sudo eject /dev/sdx
잠정적 해결
마운트 지점을 마운트 해제하면(마운트된 장치가 없어도) 이 문제를 일시적으로 해결할 수 있지만 시스템을 재부팅하거나 장치를 다시 마운트/마운트 해제하면 문제가 다시 발생합니다.
andy@pop-os:mnt$ sudo umount backup
andy@pop-os:mnt$ ll
total 4.0K
drwxr-xr-x 2 root root 4.0K Jan 19 10:16 backup/
andy@pop-os:mnt$ lsattr
----i---------e------- ./backup
andy@pop-os:~$ mountpoint /mnt/backup
/mnt/backup is not a mountpoint
사용 noauto
하고 포함하지 않으면 x-systemd.automount
장치가 없을 때 부팅 시 디렉터리가 마운트 지점이 되는 문제를 방지할 수 있지만 장치가 잠금 해제된 상태로 유지되더라도 자동 마운트가 되지 않습니다.
외부 장치 설치
비밀번호를 입력하고 기기를 잠금 해제하라는 메시지가 표시됩니다.
andy@pop-os:mnt$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sdb crypto_LUKS 2 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
└─fit ext4 1.0 yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
andy@pop-os:mnt$ ll backup/
ls: cannot access 'backup/': No such device
MOUNTPOINTS는 비어 있습니다.
# journalctl -f
Jan 21 17:17:26 pop-os kernel: usb 6-2: new SuperSpeed USB device number 2 using xhci_hcd
Jan 21 17:17:26 pop-os kernel: usb 6-2: New USB device found, idVendor=090c, idProduct=1000, bcdDevice=11.00
Jan 21 17:17:26 pop-os kernel: usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jan 21 17:17:26 pop-os kernel: usb 6-2: Product: Flash Drive FIT
Jan 21 17:17:26 pop-os kernel: usb 6-2: Manufacturer: Samsung
Jan 21 17:17:26 pop-os kernel: usb 6-2: SerialNumber: 0123456789123
Jan 21 17:17:26 pop-os kernel: usb-storage 6-2:1.0: USB Mass Storage device detected
Jan 21 17:17:26 pop-os kernel: scsi host7: usb-storage 6-2:1.0
Jan 21 17:17:26 pop-os mtp-probe[10452]: checking bus 6, device 2: "/sys/devices/pci0000:00/0000:00:08.1/0000:0b:00.4/usb6/6-2"
Jan 21 17:17:26 pop-os mtp-probe[10452]: bus: 6, device: 2 was not an MTP device
Jan 21 17:17:26 pop-os mtp-probe[10467]: checking bus 6, device 2: "/sys/devices/pci0000:00/0000:00:08.1/0000:0b:00.4/usb6/6-2"
Jan 21 17:17:26 pop-os mtp-probe[10467]: bus: 6, device: 2 was not an MTP device
Jan 21 17:17:29 pop-os kernel: scsi 7:0:0:0: Direct-Access Samsung Flash Drive FIT 1100 PQ: 0 ANSI: 6
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: Attached scsi generic sg1 type 0
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] 501253132 512-byte logical blocks: (257 GB/239 GiB)
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Write Protect is off
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Mode Sense: 43 00 00 00
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesnt support DPO or FUA
Jan 21 17:17:29 pop-os kernel: sdb: sdb1
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Attached SCSI removable disk
Jan 21 17:17:41 pop-os systemd[1]: Starting Cryptography Setup for fit...
Jan 21 17:17:41 pop-os systemd-cryptsetup[10585]: Volume fit already active.
Jan 21 17:17:41 pop-os systemd[1]: Finished Cryptography Setup for fit.
Jan 21 17:17:41 pop-os systemd[1]: Reached target Block Device Preparation for /dev/mapper/fit.
Jan 21 17:17:41 pop-os gnome-shell[3744]: Unable to mount volume 257 GB Encrypted: Gio.IOErrorEnum: Operation was cancelled
Jan 21 17:17:41 pop-os udisksd[1382]: Unlocked device /dev/sdb1 as /dev/dm-4
udisksd가 "장치 잠금 해제..."를 보고하기 전에 두 번째 줄 "작업 취소됨"이 나타납니다.
저는 두 개의 서로 다른 장치, 즉 전체 디스크 블록 암호화를 사용하는 장치와 암호화된 파티션을 사용하는 장치로 이것을 시도했지만 아무런 차이가 없습니다.
가끔 시간이 지나면...
andy@pop-os:mnt$ mount /mnt/backup
mount: /mnt/backup: /dev/mapper/fit already mounted on /mnt/backup.
...하지만 일반적으로 예상대로 장치가 설치됩니다.
기타 사항
- 내가 설정하지 않으면
x-systemd.device-timeout
기본 90초보다 훨씬 짧으면 시스템이 천천히 응답하지 않게 되고 충돌이 발생합니다.systemd
비밀번호 입력을 기다리는 동안 시간 초과가 있을 수 있다고 생각했지만 시간 초과가 길어도 도움이 되지 않는 것 같습니다. - 이전 Ubuntu 22.04 시스템의 구성을 Pop!_OS 22.04로 복사했는데 제거된 상태의 디렉터리를 나열할 때 물음표가 표시되는 경우가 있지만 자동 설치는 제대로 작동합니다. 이전 시스템에서는 마운트 지점에 불변 속성을 설정하지 않았습니다.
관련된
- a-luks 암호화 USB 플래시 드라이브를 자동으로 마운트할 때 설치 오류- 다양한 오류 및 설치 방법
- 데비안에 USB 스틱 자동 마운트
nofail
- 대신 약간 다른 접근 방식을 사용noauto
하지만 불행히도 내 질문에 대답하지 않습니다. - 더 많은 정보를 얻을 수 있지만
systemctl show mnt-backup.mount
도움이 되지 않습니다. - 매뉴얼 페이지시스템 테이블외부 장치를 처리하는 방법을 설명하지만 이러한 설정으로 인해 장치가 자동으로 마운트되지 않아 부팅 프로세스가 중단됩니다.
그렇다면 마운트 지점에 액세스하면 ??????????????????가 발생하는 이유는 무엇입니까? 이전 fstab과 새 systemd 사이에서 마법 변수를 찾을 수 없는 것 같습니다.
장치 시간 제한을 설정하지 않으면 시스템이 충돌하는 이유를 아는 것도 유용할 것입니다.
2023년 8월 업데이트됨
시스템 장치 마운트 및 자동 마운트...설명? ? ? ? .automount
장치가 액세스를 위해 마운트 지점을 열려고 시도하는 경우 .
나는 여전히 내가 원하는 동작을 달성할 수 없으며 아무것도 구성되지 않았기 때문에 그것이 사용되고 있는지 궁금합니다 udev
. 그렇다면 유일한 질문은 마운트 지점으로 사용되는 디렉터리를 사용자 정의할 수 있느냐는 것입니다. fstab
항목이 생성되면 시스템 /run/systemd/generator
단위가 생성되고 동작이 변경됩니다.
plymouth
systemd가 CPU를 100% 사용하고 시스템이 정지될 때 오류가 발생하므로 새 시스템에도 문제가 있는 것 같습니다 . 내 오래된 노트북에서는 이런 일이 발생하지 않습니다.
답변1
그냥 빨리 생각해보면...
아마도 udev
스크립트/응용 프로그램을 시작하고 마운트 지점에 대한 디렉터리를 만든 다음 모든 cryptsetup 작업을 수행하는 경우일 수 있습니다. 스크립트는 USB 드라이브의 키를 사용할 수 있습니다.
fstab을 사용하지 않고 모든 작업을 완료해 보세요.
(죄송합니다. 귀하의 질문에 대해서는 답변을 드릴 수 없습니다.)
답변2
나는 내가 원하는 것을 거의 수행하는 솔루션을 생각해 냈습니다.
데이터가 위험에 빠지지 않도록 백업 장치에서 시도해 보는 것이 좋습니다.
가장 먼저 이해해야 할 것은 systemd-automount
작동 방식입니다. 장치가 연결되어 있을 때 장치를 열어 마운트하는 것이 아니라 액세스할 때 장치를 열고 마운트합니다. 이것을 이해하면 설정을 더 쉽게 이해할 수 있습니다.
두 번째로 주목해야 할 점은 문서(및 일부 유틸리티)가 아직 업데이트되지 않았다는 것입니다 systemd
.
이 두 가지 사항을 염두에 두고 필요에 따라 , 단위를 systemd
스캔 하고 생성하는 방법을 알아야 합니다 . 다음에서 찾을 수 있습니다./etc/crypttab
/etc/fstab
mount
automount
service
/run/systemd/generator/
다음 명령의 대부분에는 sudo
액세스 권한이 필요합니다.
준비하다
자동 마운트는 키 파일을 사용하여 LUKS 컨테이너의 잠금을 해제할 때 가장 잘 작동합니다.
이 문제와 직접적인 관련은 없지만 LUKS 암호화 USB 드라이브에는 파티션을 포함할 필요가 없습니다. 실제로 원시 암호화 장치를 만드는 것이 좋습니다(인용 필요).
현재 키 홈을 볼 수 있으며 헤더를 백업해 두는 것이 좋습니다.
cryptsetup luksDump /dev/sdX
cryptsetup luksHeaderBackup --header-backup-file /root/<name>-header-backup /dev/sdX
그런 다음 새 키 파일을 생성하고 추가합니다.
dd if=/dev/urandom of=/root/<name>-keyfile bs=512 count=1
chmod 0400 /etc/cryptsetup-keys.d/crypt-backup.key
cryptsetup luksAddKey /dev/sdX /etc/cryptsetup-keys.d/crypt-backup.key
집에서 장치를 자동화할 수 있도록 암호와 키 파일이 있지만 키 파일을 공유하고 싶지 않은 다른 컴퓨터에서는 계속 액세스할 수 있습니다.
다음으로 제가 정말 유용하다고 생각한 것은 luks 헤더(및 선택적으로 파일 시스템)에 태그를 추가하는 것이었습니다. 이는 luks v2에서 가능하며 장치가 열릴 때까지(복호화될 때까지) 태그가 systemd에 표시됩니다.
저는 블루/그린 백업 전략을 사용하고 두 외부 드라이브에 동일한 레이블을 지정하여 동일한 위치에 마운트할 수 있습니다. 의 각 항목에 대해 설치 단위가 생성되므로 fstab
항목은 고유해야 합니다. LUKS 제목 태그는 이 작업을 수행할 수 있는 유일한 장소입니다.
# cryptsetup config /dev/sdX --label <label>
cryptsetup config /dev/sda --label backup
# optional: also label the containing filesytem (must be open)
# e2label /dev/mapper/<label> <fs-label>
e2label /dev/mapper/backup fit
파티셔닝을 사용하지 않을 때는 , not이 됩니다 /dev/sdX
./dev/sdX1
설정
먼저 나열한 다음 (사용하는 순서이기 때문에) /etc/crypttab
나열하는 것이 합리적 이지만 systemd는 반대로 작동합니다. /etc/fstab
마운트 지점에 액세스하려고 하면 fstab
관련 파일 시스템을 찾아서 찾습니다. 그것이 무엇인가를 볼 때 /dev/mapper/
, 그것은 보인다 crypttab
.
LABEL
에서 드라이브를 식별하는 것 외에 다른 방법을 사용할 수 있지만 에서 crypttab
드라이브를 사용하는 것 외에 설치를 자동화하는 다른 방법을 찾을 수 없습니다./dev/mapper/
fstab
# /etc/crypttab
backup LABEL=backup /etc/cryptsetup-keys.d/crypt-backup.key luks,nofail
이는 드라이브를 암호화하는 데 사용하려는 이름(이 예에서는 "backup")으로 시작됩니다. 그런 다음 장치를 식별해야 합니다. /dev/sdX
유형 식별자는 시스템에 연결했거나 연결하지 않았을 수 있는 다른 항목에 따라 변경될 수 있으므로 사용하지 마세요 . UUID
는 장치를 고유하게 식별하는 좋은 방법이지만 앞서 말했듯이 여러 장치를 같은 방식으로 마운트하고 싶기 때문에 를 사용합니다 LABEL
. 그런 다음 키 파일의 위치를 지정하거나 none
비밀번호를 사용하려는 경우. 마지막으로 장치 luks
를 Luks 장치로 식별하는 옵션이 있습니다.nofail
구함하지만필수의시작시.
# /etc/fstab
/dev/mapper/backup /mnt/backup ext4 noatime,users,nofail,x-systemd.device-timeout=100ms,x-systemd.automount,x-systemd.idle-timeout=20min 0 0
/dev/mapper/backup
를 사용해야 하는 필요성 , /mnt/backup
존재해야 하는 마운트 지점, 파일 시스템 유형에 대해 논의했습니다 . 이제 옵션...
첫째, noauto
, 그리고 auto
노동조합과는 아무 짓도 하지 마세요 x-systemd.automount
. 나는 nofail
당신이 그것을 찾을 수 없다면 문서 중 일부는 오래되었다고 말하지만 man fstab
그것이 당신이 사용하고 싶은 것입니다. 마찬가지로 장치가 없을 경우 부팅이 실패하는 것을 방지합니다. 내 시스템에는 장치가 필요하지만 찾을 수 없는 경우 90초의 시간 초과가 있지만 주의하지 않으면(가능한 경우) 정상적인 부팅 프로세스를 완전히 망치고 디스크를 복구해야 할 수 있습니다.
users
모든 사용자가 장치를 설치하고 제거할 수 있도록 허용합니다. 일반적으로 user
이렇게 설정합니다. mount
장치 일 때는 umount
사용할 수 없지만 우리가 사용하는 설치 sudo
와 같습니다 . 이것이 귀하의 사용 사례에 미치는 영향을 고려하십시오.systemd
users
이제 진짜 위기 가 온다 x-systemd.device-timeout=100ms
. 마운트 지점의 상위 디렉토리로 이동하여 작업을 수행하면 거기에 뭔가가 있어야 한다는 메시지가 시스템 ls -l
에 ????????
표시되지만 찾을 수 없습니다. 이 작업 방식을 사용하면 장치가 존재하지 않을 때 마운트 지점에 어떤 내용도 기록되지 않습니다. 그러나 /mnt
연결되지 않은 장치가 여러 개 있는 경우(정상적인 경우) 해당 장치가 나열될 때까지 하루 종일 기다리고 싶지는 않습니다. 선택 사항 입니다 x-systemd.idle-timeout=20min
.
결과
lsblk
기기 를 처음 실행하거나 접속하려고 하면 기기가 분실될 수 있습니다. 하지만 자동으로 설치되고 1~2초 후에 장치를 사용할 수 있습니다.
lsblk
# NAME TYPE FSTYPE FSVER SIZE LABEL MOUNTPOINTS
# sda disk crypto_LUKS 2 117.2G backup
ls -l /mnt/backup
# ls: cannot access '/mnt/backup': No such device
ls -l /mnt/backup
total 24
# drwxrwxr-x 3 andy andy 4096 Sep 5 2023 desktop
# drwxrwxr-x 3 andy andy 4096 Sep 5 2023 desktop-backup
# drwx------ 2 root root 16384 Aug 4 2023 lost+found
lsblk
# NAME TYPE FSTYPE FSVER SIZE LABEL MOUNTPOINTS
# sda disk crypto_LUKS 2 117.2G backup
# └─backup crypt ext4 1.0 117.2G fit /mnt/backup
ls /run/systemd/generator
# mnt-backup.automount
# mnt-backup.mount
# [email protected]
systemctl daemon-reload
장치를 생성하려면 시스템을 실행 및/또는 다시 시작해야 할 수도 있습니다 .
결론적으로
이 문제를 파악하는 데 시간이 좀 걸렸습니다. 제가 이해한 것이 옳았기를 바랍니다. 더 배울 내용이 있을 것으로 확신합니다. 수정이 필요한 경우 수정/댓글을 남겨주세요.
답변3
udev
방금 or 없이 이것을 구현했습니다 fstab
. 머신은 Arch Linux, LTS 커널, SwayWM, FWIW입니다.
- 외부 장치에 비밀번호를 저장하기 위해 시스템에 키 파일을 생성하는 것부터 시작하세요. 이 모든 것은 강력한 Arch Wiki에서 비롯됩니다. 이러한 작업을 루트로 수행하십시오.
dd bs=512 count=4 if=/dev/urandom of=/my_keyfile.bin chmod 000 /my_keyfile.bin cryptsetup luksAddKey /dev/sdb1 /my_keyfile.bin
- 귀하의
/etc/crypttab
의견 중:blah UUID=blah-blah-blah-blah /my_keyfile.bin noauto
- 이제 설치 여부는 파일 관리자에게 맡기십시오.
내가 사용하고 있는 것에는 pcmanfm-qt
부팅 시 자동으로 시작할 수 있는 데몬 모드가 있습니다(Thunar에도 이 기능이 있는 것 같습니다). 따라서 파일 관리자 설정에서 이동식 드라이브를 자동으로 마운트할지 여부를 선택하세요.
USB SSD 드라이브가 부팅 시 존재하든 나중에 삽입하든 관계없이 원활하게 마운트되며 비밀번호가 필요하지 않습니다.