Εξερεύνηση του συστήματος αρχείων του Pop OS με χωριστό /home και κρυπτογραφημένο σύστημα αρχείων

Στο παρόν άρθρο θα δούμε το σύστημα αρχείων του Pop OS. Επειδή χρησιμοποιεί κόλπα όπως LVM και κρυπτογραφημένους δίσκους (αν το επιλέξουμε) διαφέρει αρκετά από μια τυπική εγκατάσταση. Έχουμε πολλά να δούμε, αλλά δεν θα μείνουμε εκεί. Θα φτιάξουμε και μια ξεχωριστή κρυπτογραφημένη κατάτμηση για το /home.

1. Προεργασία

Στο παράδειγμα χρησημοποιώ μια εικονική μηχανή, αλλά τα ίδια μπορούν να γίνουν και σε μια κανονική εγκατάσταση. Στον προηγούμενο οδηγό δεν είχα χρησιμοποιήσει κρυπτογράφηση.

https://linux-user.gr/t/egkatastash-pop-os-se-btrfs-kai-timeshift/3646

Καιρός να αλλάξει αυτό. Θα εγκαταστήσουμε το λειτουργικό κανονικά με κρυπτογράφηση αυτή την φορά. Θα κάνω κάτι που ίσως ξενήσει κάποιους. Αντί να φτιάξω τις κατατμήσεις με το χέρι θα αφήσω το Pop OS να κάνει την δύσκολη δουλεία. Αρχικά θα κάνω μια απλή εγκατάσταση μόνο για να φτιάξει τις βασικές κατατμήσεις. Στην εγκατάσταση θα επιλέξω χρήση όλου του δίκου και κρυπτογράφηση.

Στη συνέχεια μπήκα στην εγκατάσταση και έδωσα την εντολή:

echo "timeout 3" >> /boot/efi/loader/loader.conf

με τον τρόπο αυτό μπορώ εύκολα να μπω σε περιβάλλον Recovery ή στο BIOS.

https://linux-user.gr/t/h-zwh-me-to-systemd-boot/3246

Με μια επανεκίνση μπήκα σε περιβάλλον Recovery και μπορώ να δω πως είναι οι δίσκοι.

2. Εξερεύνηση της εγκατάστασης

Ας δούμε την εικόνα των δίσκων σε μια τυπική εγκατάσταση με το εργαλείο Disks.

image

Υπάρχουν 4 κατατμήσεις

  • ❶ Ειδική κατάτμηση για το UEFI. Εδώ μπαίνει ο πυρήνας και το systemd-boot. Στο τελευταίο Pop OS είναι 1.1 GB, αλλά σε παλαιότερες εκδόσεις είχε το μισό μέγεθος.
  • ❷ Το σύστημα για recovery. Έτσι μπορείς να μπεις στο σύστημα και να δεις αυτήν την εικόνα.
  • ❸ Η κύρια κατάτμηση. Κρυπτογραφημένη
  • ❹ Μια κατάτμηση για swap. Κρυπτογραφημένη.

Εναλλακτικά από το τερματικό:

sudo parted /dev/sda unit MiB print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 128000MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start      End        Size       File system     Name      Flags
 1      2.00MiB    1024MiB    1022MiB    fat32                     boot, esp
 2      1024MiB    5120MiB    4096MiB    fat32           recovery  msftdata
 3      5120MiB    123902MiB  118782MiB
 4      123902MiB  127998MiB  4096MiB    linux-swap(v1)            swap

2.1 Εξερεύνηση του κρυπτογραφημένου δίσκου

Θα δούμε πρώτα κάποιες πληροφορίες για τον κρυπτογραφημένο δίσκο. Σε ένα τερματικό

sudo cryptsetup luksDump /dev/sda3

και θα δούμε τις πληροφορίες κρυπτογράφησης.

Κλικ για την έξοδο
LUKS header information
Version:         2
Epoch:           3
Metadata area:   16384 [bytes]
Keyslots area:   16744448 [bytes]
UUID:            93c8b224-1900-4ff8-b6ce-6fe4eb4a3857
Label:           (no label)
Subsystem:       (no subsystem)
Flags:         (no flags)

Data segments:
  0: crypt
  offset: 16777216 [bytes]
  length: (whole device)
  cipher: aes-xts-plain64
  sector: 512 [bytes]

Keyslots:
  0: luks2
  Key:        512 bits
  Priority:   normal
  Cipher:     aes-xts-plain64
  Cipher key: 512 bits
  PBKDF:      argon2id
  Time cost:  7
  Memory:     1048576
  Threads:    3
  Salt:       14 93 ef 6d f6 91 ce 28 db 30 e2 8b 12 4c b4 d0 
              8c 03 ef e8 11 df b9 88 f3 db ce f3 01 e2 39 fa 
  AF stripes: 4000
  AF hash:    sha256
  Area offset:32768 [bytes]
  Area length:258048 [bytes]
  Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
  Hash:       sha256
  Iterations: 174066
  Salt:       c3 e4 59 57 cf 1b de 07 3d 02 f8 a8 cd 38 53 91 
              14 5f fa 9c 82 77 c3 3c 45 e7 ef a0 9a cf 4c 9e 
  Digest:     52 c9 f3 8b ef a5 3e b3 67 98 27 9f c2 99 40 3f 
              70 d7 21 f8 20 73 b8 25 a3 5e 08 52 b5 b9 0f ba

To σημαντικό είναι πως υπάρχει ένα κλειδί αποκρυπτογράφησης. Μπορούμε να προσθέσουμε ένα δεύτερο. Κάτι που θα μας φανεί χρήσιμο κάποια στιγμή. Αυτό μπορεί να είναι και κάποιο αρχείο. Σε ένα τερματικό:

sudo cryptsetup luksAddKey /dev/sda3

και αν ξανατρέξουμε την εντολή θα δούμε πως πλέον υπάρχουν 2 διαφορετικά κλειδιά αποκρυπτογράφησης.

Ήρθε η ώρα να ξεκλειδώσουμε τον δίσκο. Αυτό μπορούμε να είτε πατώντας πάνω στο λουκέτο στο εργαλείο DIsks είτε από το τερματικό με την εντολή:

sudo cryptsetup luksOpen /dev/sda3 cryptdata

και θα δώσουμε έναν από τους δυο κωδικούς. Το όνομα cryptdata είναι ένα tag που καλό είναι να το αφήσουμε ως έχει.

Στο εργαλείο Disks θα δούμε τώρα ένα νέο δίσκο, που όμως δεν είναι δίσκος και δείχνει στο /dev/data/root

image

Ας ρίξουμε τώρα μια ματιά στον κατάλογο /dev/mapper.
Θα δούμε εκεί 2 καινούργια αρχεία τα cryptdata και data-root.
Τι είναι αυτά; Θα εξετάσουμε παρακάτω αυτά τα μυστήρια.

2.2 Εξερεύνηση του LVM

To LVM (Logical Volume Manager) είναι ο τρόπος του Linux να συνδέουμε πολλούς δίσκους και να τους κάνουμε ένα μεγάλο. Μπορείτε να μάθετε περισσότερα για το LVM εδώ. Έχει πολλές δυνατότητες αλλά ας μείνουμε στα βασικά. Αρκεί να ξέρουμε ότι ένα σύστημα LVM αποτελείται κυρίως από:

  • physical volume (PV) Ένας οι περισσότεροι φυσικοί δίσκοι, ή κάτι που μοιάζει με φυσικό δίσκο. Μια κρυπτογραφημένη κατάτμηση για παράδειγμα …
  • logical volume (LV) Λογικοί τόμοι: Το αντίστοιχο μιας κατάτμησης.
  • volume group (VG) Συνδέει μαζί Logical Volumes και Physical Volumes σε μια μονάδα διαχείρησης

Δυστυχώς, δεν υπάρχουν γραφικά εργαλεία να εγκαταστήσουμε να τα δούμε, τουλάχιστον στα αποθετήρια. Οπότε θα εξερευνήσουμε τα παραπάνω απο το τερματικό.

Θα δούμε πρώτα τα physical volume.

sudo pvs
PV                    VG   Fmt  Attr PSize   PFree
/dev/mapper/cryptdata data lvm2 a--  115.98g    0

Έχουμε μόνο μια κατάτμηση τη /dev/mapper/cryptdata μορφοποιημένη με σύστημα αρχείων lvm2. Αυτή είναι η αποκρυπτογραφημένη κατάτμηση /dev/sda3 (θυμάστε που την είδαμε στον κατάλογο;) . Θα μπορούσαμε να προσθέταμε και άλλους δίσκους ή κατατμήσεις, αλλά αυτό είναι μια άλλη ιστορία.

Στη συνέχεια θα δούμε πως αυτή η κατάτμηση μοιράζεται σε volume groups. Έχουμε πάλι ένα με όνομα data

sudo vgs
VG   #PV #LV #SN Attr   VSize   VFree
data   1   1   0 wz--n- 115.98g    0

Τέλος, οι κατατμήσεις

sudo lvs
LV   VG   Attr       LSize   ...
root data -wi-a----- 115.98g

To Volume group data έχει μία κατάτμηση (volume group) με όνομα root. Θα το βρούμε στο αρχείο συσκευής /dev/mapper/data-root.

Τώρα επιτέλους μπορούμε να δούμε τα στοιχεία της κατάτμησης. Είμαστε σε γνώριμα νερά:

sudo lsblk /dev/mapper/data-root -f
NAME        FSTYPE FSVER ...
data-root   ext4   1.0    345993e2-a3c3-4ce8-a54e-c03130ad8e2a

Ανακεφαλαίωση:
Η κρυπτογραφημένη κατάτμηση /dev/sda3 υπάρχει αποκρυπτογραφημένη σαν cryptdata. Αυτή περιέχει ένα physical volume με όνομα data. Ο φυσικός τόμος περιέχει ένα logical volume group με όνομα data. Μέσα σε αυτόν θα βρούμε την κατάτμηση root. Αυτή έχει όνομα data-root και περιέχει το σύστημα αρχείων σε μορφή ‘ext4’. Απλούστατον :joy:

2.3 Κλείσιμο των κατατμήσεων

Τώρα που καταλάβαμε τι συμβαίνει ας κλειδώσουμε πάλι την κατάτμηση (αλλά μην το κάνετε ακόμα)

sudo cryptsetup luksClose /dev/mapper/data-root
sudo cryptsetup luksClose /dev/mapper/cryptdata
ls /dev/mapper

Με τη γνώση που αποκτήσαμε μπορούμε να κάνουμε μια εγκατάσταση που να καλύπτει καλύτερα τις ανάγκες μας. Θα μπορούσαμε βέβαια να στήσουμε τις κατατμήσεις αυτές με το χέρι, αλλά είναι δυσκολότερο. Γιατί να πάρουμε τον δύσκολο δρόμο και να μην αφήσουμε το Pop OS να κάνει τη δύσκολη δουλεία;

3. Δημιουργία κρυπτογραφημένης κατάτμησης /home

Σαν ένα παράδειγμα θα φτιάξουμε μια κρυπτογραφημένη χωριστή κατάτμηση για το /home. Με ξεκλείδωτη την κατάτμηση το πρώτο βήμα είναι να μικρύνουμε το logical volume. Αφού πρώτα ελέγξουμε το σύστημα αρχείων πως είναι εντάξει και πάρουμε τα backup μας.

sudo e2fsck -f /dev/mapper/data-root

Θα την περιορίσουμε σε ας πούμε 40GB. Είναι μια διαδικασία δυο βημάτων. Πρώτα θα μειώσουμε την κατάτμηση και στη συνέχεια τον λογικό τόμο.

sudo resize2fs /dev/mapper/data-root 40G
sudo lvreduce -L 40G /dev/mapper/data-root

Ας κάνουμε ένα έλεγχο πως τα πάντα πήγαν καλά και ας δούμε επιπλέον πληροφορίες για το LVM

sudo e2fsck  /dev/mapper/data-root
sudo lvdisplay
sudo vgdisplay

H τελευταία εντολή μας λέει πως υπάρχουν 75.98GB διαθέσιμα. Θα φτιάξουμε ένα καινούργιο volume group (αλλιώς κατάτμηση).

sudo lvcreate -L 75.98GB -n home data
sudo lvdisplay

Ο καινούργιος τόμος είναι διαθέσιμος σαν /dev/data/home που είναι το ίδιο με το /dev/mapper/data-home, αν μπερδευτήκατε. Ώρα να φτιάξουμε εκεί ένα σύστημα αρχείων. Αυτό τουλάχιστον μπορούμε να το κάνουμε με γραφικό τρόπο.

Δείτε ξανά τις εντολές του LVM. Τα πρώτα δυο γράμματα μας λένε σε τι επίπεδο του LVM αφορούν. Αν ξεκινάν με lv για παράδειγμα θα έχουν να κάνουν με volume groups.

4. Επανεγκατάσταση του συστήματος

Μου αρέσει να πηγαίνω με τον εύκολο τρόπο. Θα κάνω επανεγκατάστασή το λειτουργικό με χωριστή κατάτμηση /home σε btrfs. Σε ένα επόμενο άρθρο θα δούμε ένα ποιο πολύπλοκο setup με περισσότερα κόλπα. Μετά την εγκατάσταση θα δούμε πως βλέπεις το όλο σύστημα μέσα από το εγκατεστημένο λειτουργικό. Πριν προχωρήσω έκανα μια επανεκκίνηση με το μέσο εγκατάστασης.

Δεν μπορούμε να κάνουμε προσαρμοσμένη εγκατάσταση από το Recovery Partition. Γιατί η κατάτμηση για το recovery είναι ήδη προσαρτημένη. Αν το κάνεις αυτό η εγκατάσταση θα προχωρήσει για λίγο και θα πρέπει να ξ αναστήσεις τα πάντα από την αρχή. Ναι, την πάτησα και έμαθα.

image

image

Και ήρθε η ώρα να προσδιορίσουμε τις κατατμήσεις:

image

Where filesystem Notes
/boot/efi fat32 Boot efi partition
/recovery ext4 Recovery partition, use custom
Root(/) btrfs Root filesystem (encrypted)
Home(/home) btrfs Home filesystem (encrypted)
Swap Swap (encrypted)

Βολικό είναι να δώσουμε ένα κωδικό χρήστη που να μπορεί να ξεκλειδώνει και τον δίσκο.

5. Εξερεύνηση του εγκατεστημένου συστήματος

Επιτέλους τα καταφέραμε. Έχουμε ένα λειτουργικό με κρυπτογραφημένο δίσκο και swap με χωριστή κρυπτογραφημένη κατάτμηση για το /home.

* image

Ας δούμε 2 σημαντικά αρχεία. Το /etc/fstab δεν έχει τίποτα περίεργο:

PARTUUID=88390bec...   /boot/efi  vfat  umask=0077  0  0
UUID=28a38...          /recovery  ext4  noatime,errors=remount-ro  0  0
/dev/mapper/cryptswap  none  swap  defaults  0  0
UUID=d6ee8c8...        /  btrfs  defaults  0  0
UUID=7b34496...       /home  btrfs  defaults  0  0

Που είναι το αρχείο που ελέγχει την κρυπτογράφηση; Θα το βρούμε στο /etc/crypttab:

cryptdata UUID=c7bfe... none luks
cryptswap UUID=982.. /dev/urandom swap,plain,offset=1024,cipher=aes-xts-plain64,size=512

Και με το LVM δεν θα ανυσυχούμε πλέον εάν γεμίσει κάποιος δίσκος. Αλλά πως τα κάνεις αυτά καθώς και μια προχωρημένη χρήση του LVM (που το είδαμε μόνο πολύ επιαφανειακά) είναι μια άλλη ιστορία.

Μείνετε συνονισμένοι για τη συναρπαστική συνέχεια της εγκατάστασης…

4 «Μου αρέσει»