การติดตั้ง LUKS จากบรรทัดรับคำสั่ง


11

เมื่ออยู่ในnautilusหรือcajaฉันคลิกที่ไอคอนของดิสก์ที่เข้ารหัสและป้อนรหัสผ่านของฉันอุปกรณ์บล็อกพื้นฐานจะถูกแมป/dev/mapper/luks-$UUIDและมันจะถูกเมาท์ที่/media/$USER/$DISKไม่ต้องใช้รหัสผ่านรูท มีวิธีเรียกกระบวนการนี้จากบรรทัดคำสั่งโดยไม่มี GUI รวมถึงการเลิก sudo และการให้ mountpoint สามารถ unmount จาก GUI ได้อีกครั้ง


โดยไม่ต้องแน่ใจ (ดังนั้นความคิดเห็นมากกว่าคำตอบ) ฉันเชื่อว่า GUI ทำสิ่งนี้ผ่านudisks(หรือudisks2) การตรวจสอบตัวเลือกจากยูทิลิตี้ CLI อาจให้คำตอบเพิ่มเติม
ห่อหุ้ม

นอกจากนี้ยังเป็นไปได้ว่าคุณป้อนรหัสผ่านในครั้งแรกและเลือกที่จะบันทึกไว้ในพวงกุญแจเข้าสู่ระบบของคุณ ดังนั้นทางเทคนิคจะใช้รหัสผ่าน แต่จะทำโดยอัตโนมัติเพื่อให้คุณไม่เห็น
ห่อหุ้ม

คำตอบ:


12

ฉันไม่รู้วิธีเดียวในการทำเช่นนี้ โปรแกรม GUI กำลังสอบปากคำดิสก์อย่างยุติธรรมเพื่อใช้แนวทาง "ถูกต้อง" และคุณจะต้องดำเนินการบางอย่างด้วยตัวคุณเอง คุณไม่จำเป็นต้องใช้ sudo แต่ฉันคิดว่าลำดับเหตุการณ์ที่เกิดขึ้นนั้นค่อนข้างเจ็บปวด

คำตอบสั้น ๆ

ใช้udisksctlจากudisks2แพ็คเกจ:

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

บัญชีผู้ใช้ของคุณจะต้องได้รับอนุญาตอย่างเหมาะสมเพื่อให้การทำงานด้านบน บน Debian และ Ubuntu นั่นหมายถึงการเพิ่มบัญชีของคุณไปยัง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 มันถูกออกแบบมาสำหรับแฟลชไดรฟ์ usb ฉันวางแผนที่จะรวมการตั้งค่าที่คุณอธิบายไว้ในสคริปต์ด้วย
Josh Patton

3

คำตอบโดยasciiphilดูเหมือนว่าฉันมีความถูกต้องและควรจะทำเครื่องหมายดังกล่าว

มันเริ่มต้นขึ้น "ฉันไม่รู้วิธีเดียวในการทำสิ่งนี้" ฉันทำไม่ได้และเปิดคำขอคุณสมบัติที่เกี่ยวข้อง ในฐานะที่เป็นวิธีแก้ปัญหาหนึ่งสามารถสร้างสคริปต์ wrapper เพื่อให้วิธีเดียวคำสั่งเพื่อปลดล็อคและติดตั้งพาร์ทิชัน

สมมติว่าคุณใช้ทุบตีบันทึกสคริปต์ดังเช่นทำให้ปฏิบัติการและวางไว้ในไดเรกทอรีในของคุณunlock-and-mount PATHจากนั้นคุณจะสามารถปลดล็อคและติดตั้งอุปกรณ์ได้ในขั้นตอนunlock-and-mount /dev/disk/by-id/my-device-part-Xเดียว

คำเตือน: สิ่งนี้ขึ้นอยู่กับการแยกวิเคราะห์ข้อความที่udisksctlส่งไปยัง stdout และตามความเสถียรของudisksctlอินเตอร์เฟสบรรทัดคำสั่ง นี่เปราะบางตามudisksctl หน้า manซึ่งบอกว่า:

[สิ่งนี้] โปรแกรมไม่ได้มีวัตถุประสงค์เพื่อใช้งานโดยสคริปต์หรือโปรแกรมอื่น ๆ - ตัวเลือก / คำสั่งอาจเปลี่ยนแปลงในลักษณะที่เข้ากันไม่ได้ในอนาคตแม้ในรุ่นบำรุงรักษา

ในระหว่างนี้นี่คือสคริปต์ที่ใช้งานได้ในตอนนี้:

#!/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.