Inhalt
Statt einer kompletten Partition können auch einzelne Verzeichnisse mit LUKS verschlüssel werden. Das verschlüsselte home-Verzeichnis eines Nutzers kann beim Anmelden mit pam-mount auch automatisch mit seinem Passwort entschlüsselt eingebunden werden.
Anlegen von Nutzer und Verzeichnis
Diese Prozedur wurde auf Debian 12 (bookworm) durchgeführt, sollte aber auf allen Debian-basierten Linux-Varianten (wie z.B. Ubuntu oder Mint) ebenso funktionieren.
- Backup der Nutzerdaten durchführen!
- Softwarepakete zum Verschlüsseln und Mounten beim Anmelden installieren
sudo apt install cryptsetup libpam-mount
- Nutzer, sein home-Verzeichnis und Zeigerdatei anlegen
sudo useradd testuser
sudo mkdir /home/testuser
sudo chown testuser:testuser /home/testusersudo touch /home/testuser/___unencrypted
___
- Datei in der gewünschten Größe des home-Verzeichnisses anlegen (hier 5GB)
sudo dd if=/dev/zero of=/home/testuser.luks bs=1M count=5120
- Verschlüsselung starten und Dateisystem anlegen
sudo cryptsetup luksFormat /home/testuser.luks
sudo cryptsetup open /home/testuser.luks crypt_home_testuser
sudo mkfs.ext4 /dev/mapper/crypt_home_testusersudo chown testuser:testuser /home/testuser.luks
- Dateisystem mounten, Zeigerdatei anlegen, wieder unmounten und schließen
sudo mount /dev/mapper/crypt_home_testuser /home/testuser
sudo touch /home/testuser/___encrypted___
sudo umount /home/testuser
sudo cryptsetup close crypt_home_testuser - Automatisches mounten mit pam_mount
In/etc/security/pam_mount.conf.xml
am Ende des<pam_mount>
-Abschnittes folgenden block einfügen:<volume user="testuser" path="/home/testuser-luks" mountpoint="/home/testuser" options="defaults" />
Zeigerdateien
Die Zeigerdateien sorgen dafür, dass man direkt sieht, ob das richtige Verzeichnis gemountet ist. Als Nutzer „testuser” sieht man die Zeigerdatei für das verschlüsselte Verzeichnis:
$ ls ~
lost+found ___encrypted___
$
Jeder andere Nutzer sieht nur den unverschlüsselten (leeren) Mount-Point:
$ ls /home/testuser
___unencrypted___
$
Unmounten beim Logout
Kleiner Wermutstropfen: nach dem Ausloggen aus einem graphischen Desktop wie z.B. Gnome sorgen einige weiterlaufende daemons dafür, dass das Nutzerverzeichnis unverschlüsselt gemountet bleibt. Bei mir hat es geholfen, in der pam_mount-Konfigurationsdatei die Zeile
<logout wait="0" hup="no" term="no" kill="no" />
zu ändern in
<logout wait="100" hup="yes" term="yes" kill="yes" />
Voraussetzung dafür ist, dass das Tool ofl (list open files) aus dem Paket hxtools installiert ist. Dann prüft pam_mount beim ausloggen auf offene Dateien, wartet ggfs. für die konfigurierte Zeit (ms) und beendet dann nötigenfalls die jeweiligen blockierenden Prozesse mit den entsprechenden Signalen.
Bestehendes Verzeichnis verschlüsseln
- Nutzer ausloggen
z.B. mitofl
prüfen, dass keine Dateien seines /home-Verzeichnisses offen sindofl /home/existinguser
- /home-Verzeichnis des Nutzers verschieben
sudo mv /home/existinguser /home/existinguser.tmp
- Die Prozedur „Anlegen von Nutzer und Verzeichnis” durchführen
aber das Anlegen des Nutzers überspringen - Daten aus dem .tmp-Verzeichnis in das neue Verzeichnis kopieren
(während das neue, verschlüsselte Nutzerverzeichnis noch gemountet ist)sudo rsync -aAXv /home/existinguser.tmp/ /home/existinguser
/sudo chown -R
existinguser
:existinguser
/home/existinguser
- Erfolg prüfen und aufräumen
Alsexistinguser
anmelden und anhand der Zeigerdatei prüfen, dass das verschlüsselte Verzeichnis gemountet ist und alle Dateien vollständig vorhanden sind. Nachdem man sich nochmals versichert hat, dass ein aktuelles Backup vorhanden ist, kann das unverschlüsselte Verzeichnis/home/existinguser.tmp
entfernt werden.
Nutzerverzeichnis vergrößern
- Das Verzeichnis darf nicht aktiv oder gemountet sein
- Dateisystem auf ausreichend freien Speicher prüfen (z.B. mit
df -h
) - Mit truncate die verschlüsselte Datei vergrößern (hier um weitere 5GB)
sudo truncate -s +5G /home/testuser.luks
- LUKS und Dateisystem an die neue Größe anpassen lassen
sudo cryptsetup open /home/testuser.luks crypt_home_testuser
sudo cryptsetup resize crypt_home_testuser
sudo resize2fs /dev/mapper/crypt_home_testuser
sudo cryptsetup close crypt_home_testuser