LUKS'u komut satırından bağlama


11

İçinde zaman nautilusya cajaben şifreli diskin simgesine tıklayın ve şifremi girdikten, altta yatan blok aygıt eşleştirilmiş olur /dev/mapper/luks-$UUIDve onu monte alır /media/$USER/$DISK, hiçbir kök parola gerekli. Bu işlemi komut satırından, GUI olmadan, sudo'yu engelleme ve bağlama noktasının GUI'den tekrar sökülebilmesi de dahil olmak üzere çağırmanın bir yolu var mı?


Emin olmadan (dolayısıyla cevap yerine bir yorum) GUI'nin bunu udisks(veya udisks2) yoluyla yaptığına inanıyorum . Seçenekleri CLI yardımcı programından araştırmak daha fazla yanıt verebilir.
sarmak

Ayrıca, şifreyi ilk kez girmeniz ve giriş anahtarlığınıza kaydetmek için seçmeniz mümkündür. Dolayısıyla teknik olarak yapar bir şifre kullanmak, ama bunu görmemek için onun otomatik olarak yapılır.
15:13

Yanıtlar:


12

Bunu yapmanın tek komut yolunu bilmiyorum. GUI programları, "doğru" yaklaşımı benimsemek için diskin bir miktar sorgusunu yapıyor ve bunun bir kısmını kendiniz yapmanız gerekiyor. Yine de sudo'ya ihtiyacınız yok ve bence ortaya çıkan olaylar dizisi nispeten ağrısız.

Kısa Cevap

Kullanım udisksctlgelen udisks2paketin:

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

Yukarıdakilerin çalışması için kullanıcı hesabınızın uygun şekilde yetkilendirilmesi gerekir. Debian ve Ubuntu'da, hesabınızı plugdevgruba eklemek anlamına gelir .

Diski tamamladığınızda:

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

Nasıl Kurulur

Diski olabildiğince ağrısız hale getirmek için işleri (komut satırı aracılığıyla) nasıl ayarlayabileceğiniz aşağıda açıklanmıştır. USB sürücünün tamamını tek bir dosya sistemi olarak kullanmak istediğinizi varsayacağım. Diğer yapılandırmalar talimatlarda değişiklik yapılmasını gerektirir. Varyasyonlara dikkat edin: Şifrelenmiş kapsayıcıda, ayrıcalıklı olmayan bir hesabın her şeyin bağlantısını kesmesine izin verecek LVM'yi kullanmanın bir yolunu bulamadım. (Bir birim grubunu devre dışı bırakmanın bir yolunu göremiyorum udisksctl.)

Örnekleme amacıyla, diskin olduğunu söyleyeceğiz /dev/sda. Daha sonra başvurmayı kolaylaştırmak için dosya sistemi için bir adınızın olması gerekir. " example" Kullanacağım .

Diski Bölme

sudo parted /dev/sdaAşağıdaki komutları çalıştırın ve çalıştırın:

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

mkpartKomut muhtemelen biraz parametrelerini ayarlamak isteyecektir. Önerilen sayılarını kabul etmen iyi olur.

Bölüm şimdi üzerinden kullanılabilir /dev/disk/by-partlabel/example-part.

LUKS Bölümü Oluşturma ve Bağlama

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

İstemleri inceleyin.

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

Şifrelenmiş bir cihaz şimdi mevcuttur /dev/mapper/example-unlocked. Bu kalıcı bir şey olmayacak; sadece kurulum süreci içindir.

Dosya Sisteminizi Oluşturun

Diyelim ki kullandığınız dosya sistemi XFS. Hemen hemen tüm diğer geleneksel dosya sistemleri aynı şekilde çalışır. Önemli olan, daha sonra başvurabileceğiniz bir etiket eklemektir:

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

Dosya sisteminin engelleme cihazına artık üzerinden erişilebilir /dev/disk/by-label/example.

Dosya Sistemi İzinlerini Ayarlama

Varsayılan olarak, dosya sistemine yalnızca kök tarafından erişilebilir. Çoğu durumda, dosyaların kullanıcı hesabınız tarafından erişilebilir olmasını istersiniz. Hesap adınızın " user" olduğunu varsayarsak :

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

Her Şeyi Kapat

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

Dosya Sisteminizi Kullanın

Düzenli olarak yapacaksınız. USB sürücüsünü taktıktan sonra,

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

Kullanıcı hesabınız " user" ise, dosya sistemi şimdi adresinde yer alacaktır /media/user/example.

Dosya sistemini çıkarmak için:

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

Şimdi USB sürücüsünü çıkarabilirsiniz.


"Dosya Sisteminizi Kullanın " bölümünüzü otomatikleştiren ve basitleştiren açık kaynaklı bir bash betiği oluşturdum: github.com/JerichoJyant/usbkey . Usb flash sürücüler için tasarlanmıştır. Burada açıkladığınız kurulumu senaryoya da dahil etmeyi planlıyorum.
Josh Patton

3

Cevap tarafından asciiphil doğru gibi geliyor bana, ve bu şekilde işaretlenmiş olmalıdır.

Başlıyor, "Bunu yapmanın tek komut yolunu bilmiyorum." Ben de yapmıyorum ve karşılık gelen bir özellik isteği açtım . Çözüm olarak, bir bölümün kilidini açmak ve bağlamak için tek komutlu bir yol sağlamak üzere bir sarmalayıcı komut dosyası oluşturulabilir.

Bash kullandığınızı varsayarsak, aşağıdaki komut dosyasını örneğin unlock-and-mountyürütülebilir olarak kaydedin ve dizininizdeki bir dizine koyun PATH. Daha sonra bir cihazın kilidini açıp bir adımda monte edebilirsiniz unlock-and-mount /dev/disk/by-id/my-device-part-X.

Uyarı: Bu udisksctl, stdout'a gönderilen mesajların ayrıştırılmasına ve udisksctlkomut satırı arayüzünün kararlılığına dayanır . udisksctl Man sayfasına göre bu kırılgandır :

[Bu] programın komut dosyaları veya diğer programlar tarafından kullanılması amaçlanmamıştır - seçenekler / komutlar bakım sürümlerinde bile gelecekte uyumsuz şekillerde değişebilir.

Bu arada, şimdilik çalışan komut dosyası:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.