DSIW

Alles was interessant ist... (Linux, Programmierung, Datenschutz, Medien, uvm.)

Automatisierte Entschlüsselung der ext. Festplatte und Backup

| Comments

In diesem Artikel geht es um eine externe Festplatte, die für Backups benutzt wird, die so einzurichten ist, dass alles automatisiert abläuft. Die Festplatte ist mit LUKS verschlüsselt, soll automatisch eingebunden werden, das Backup soll durchgeführt werden und wenn alles abgearbeitet ist, soll sie in den Stand-by gefahren werden. Mein Beispiel bezieht sich auf eine zusätzliche Systemverschlüsselung.

Herunterladen und Synchronisation für’s Studium

| Comments

Ich muss in meinem Studium viele Übungsblätter herunterladen, die nach und nach online gestellt werden. Es war mir zu lästig immer wieder mal nachzuschauen, ob denn ein neues Übungsblatt online gestellt wurde. Deshalb habe ich mir ein Skript geschrieben, das mir diese Dateien (PDF) herunterlädt und gleich im richtigen Verzeichnis abspeichert. Ich habe den Befehl aus diesem Artikel aufgegriffen.

Das Skript ist in meinem Repository veröffentlicht. Es basiert hauptsächlich auf dem Downloadprogramm wget.

Desweiteren synchronisiere ich meinen Studiumsverzeichnis auf meiner lokalen Festplatte mit dem Speicher auf dem Hochschulserver, auf den wir Zugriff haben. Dazu nutze ich Unison - ein Synchronisationsprogramm. Das Skript lief vorher mit rsync in beide Richtungen nacheinander. Aber ich hatte festgestellt, dass dadurch keine richtige Synchronisation stattfand. Es kam zu Datenverlust. Zum Glück war nur eine Datei davon betroffen.

Die Synchronisation über Unison ist relativ einfach. Dazu erstellt man eine Konfigurationsdatei in dem Ordner ~/.unison/dateiname.prf. In dieser Datei stehen die beiden zu synchronisierenden Verzeichnisse hinter root =. Man muss allerdings darauf achten, dass die gleichen Versionen auf dem Server und Client benutzt werden.

Meine Konfiguration sieht wie folgt aus:

studium.prf
1
2
3
4
root = /home/USER/studium/ # Lokale URI
root = ssh://benutzername@server/Dokumente # Server-URI
batch = true # Es werden keine Fragen gestellt.
auto = true # Es wird automatisch akzeptiert, was gemacht werden soll.

Der Aufruf davon:

1
unison-2.27 studium -logfile /home/USER/logs/sync-studium.log

Das wars! Viel Spaß beim Synchronisieren von Verzeichnissen und Herunterladen der PDFs.

Root-Skripte ohne Passwort ausführen

| Comments

Normalerweise müssen Skripte, die sich im Ordner /sbin oder /usr/sbin befinden mit einem Passwort ausgeführt werden. Das lässt sich unterbinden. Sinnvoll ist die Angelegenheit, wenn man seinen Rechner herunterfahren, neustarten oder in den Stand-by bzw. Ruhezustand versetzen möchte. Denn nach einem Klick im Menü Ausschalten, muss man auch kein Passwort eingeben.

Sichern von /boot

| Comments

Durch meine Serie von Neuinstallationen in der vergangenen Woche, habe ich gelernt, dass ich die boot-Partition sichern sollte. Ich hatte Probleme mit der Installation von GRUB und hatte dadurch keinen Zugang mehr zu meinem System. Durch die Sicherung erhoffe ich mir, dass ich diese wiederherstellen kann und dann GRUB wieder funktioniert. Die Sicherung ist mit einem einzigen Befehl machbar:

1
2
3
4
5
6
7
8
9
10
sudo dd if=/dev/sda1 of=/home/USER/boot-backup-2011-04-13.img
\__/ |  \__________/ \______________________________________/
  |  |        |                          |
  |  |        |                          \- Output-File (Image)
  |  |        |
  |  |        \- Input-File (Device)
  |  |
  |  \- Programmname
  |
  \- Superuser-Rechte

Natürlich ist es auch möglich andere Partitionen zu sichern. Das bietet sich dann an, wenn man zum Beispiel Daten einer Festplatte wiederherstellen möchte. Es kann vorkommen, dass man durch das Probieren des Wiederherstellens mehr kaputt macht, als man es möchte. Deshalb sollte man nur auf einer Kopie arbeiten.

Eine Woche lang Probleme lösen

| Comments

Leider musste ich die letzten 5 Tage dreimal mein System neuinstallieren. Am Anfang war das Problem, dass Linux nicht mehr booten wollte, weil es wohl meine verschlüsselte Festplatte nicht erkannt hatte. Nach dem Booten meines Live-OS auf meinem USB-Stick konnte ich das Problem nicht lösen. Das war der Auslöser für weitere Arbeit. Nachdem ich dann mein System neuinstalliert hatte und Software installiert und mein System geupdatet habe, kamen weitere Probleme auf. Zum einen gab es Probleme mit Plymouth, aber nach dem Laden des Kernels im Rescue-Modus, konnte ich das System trotzdem (irgendwie) starten. Ich wollte Plymouth neu installieren, doch es gab Paketabhängigkeitsprobleme. Nach einigem Probieren der Aktualisierung von Plymouth, gab ich es auf. Nachdem ich mich angemeldet hatte, wurde mir ein weiterer Hinweis angezeigt: Meine CPU konnte nicht heruntergetaktet werden, weil es entweder meine CPU nicht unterstützt oder eine Einstellung im BIOS falsch sei. Aber ich hatte zuvor keine Einstellungen im BIOS verändert, sodass dies nicht in Frage kam. Nach einer Weile Suchen, konnte ich herausfinden, dass das Kernel-Modul acpi_cpufreq für neuere Intel-CPUs nicht geladen war. Nach einem nachträglichen Laden mittels modprobe acpi_cpufreq wurde meine CPU immer noch nicht herunter getaktet. Ich gab die Suche des Problems auf, da noch weitere Probleme auftraten. Ein weiteres Problem war, dass nach ca. 5 bis 10 Minuten nach dem Anmelden der XServer (/etc/init.d/gdm) neustartete und ich mich somit wieder neu anmelden konnte. Ich hatte für dieses Problem meinen nvidia-Treiber im Auge, den ich dann auch gleich neuinstallierte. Doch auch dies erbrachte nicht den gewünschten Erfolg. Ich habe mich dann dazu entschlossen mein System nochmals neu zu installieren, weil die Menge der Probleme zu groß war. Eine Neuinstallation ist nunmal innerhalb ca. 30 Minuten getan.

Nach der Installation habe ich erst einmal einige Fremdpaketquellen entfernt - nur die nötigsten wurden beibehalten. Ich ließ erst einmal mein System updaten, dann wurde meine Paketliste abgearbeitet. Diesmal hatte ich keine Abhängigkeitsprobleme und Plymouth war nun in der aktuellen Version installiert. Der erste Erfolg. Nach einem Neustart des Betriebsystems startete Plymouth und ich konnte mein Passwort zur Entschlüsselung meiner Festplatte eingeben. Nach ein paar Sekunden wurde wieder ein Hinweis angezeigt. Dieser hieß: ”Die Festplatte /boot ist noch nicht bereit oder nicht vorhanden.” Dieses Problem tritt auf, wenn Linux die Konfigurationsdatei /etc/fstab abarbeitet. Ich habe festgestellt, dass die UUID (Festplatten-ID) für die Festplatte /dev/sda1, die unter /boot eingebunden werden sollte, falsch war. Ich aktualisierte diese. (Die UUIDs der eingebundenen Festplatten kann man sich mittels sudo [blkid](http://wiki.ubuntuusers.de/blkid) anschauen.) Zweiter Erfolg. Zudem wurde meine CPU wieder heruntergetaktet, wenn nicht die volle Leistung gebraucht wird. Nächster Erfolg.

Beim Booten wurde im GRUB-Menü nur der älteste Kernel angezeigt, obwohl ich einen aktuelleren installiert hatte. Welche Kernel man installiert hat, kann man sich in der Paketverwaltung (System -> Systemverwaltung -> Synaptic-Paketverwaltung) anschauen, indem man linux-image in das Suchfeld eingibt. Eine weitere Möglichkeit mittels der Konsole ist die Eingabe von dpkg --get-selections | grep linux-image. Der aktuell geladene Kernel ist mit uname -r einsehbar. Ein sudo update-grub oder sudo update-initramfs -u brachte keinen Erfolg. Nachdem ich in einem Forum nachgefragt hatte, was ich denn tun könne, wurde der Vorschlag genannt, dass ich GRUB neu installieren solle. Das habe ich dann auch mit > sudo grub-install /dev/sda gemacht. Eine Fehlermeldung war die Antwort. Ich startete meinen Rechner neu und habe festgestellt, dass GRUB jetzt gar nicht mehr lief. Das Problem bei meinem System ist, dass meine Festplatte verschlüsselt ist und mit LVM (Logic Volume Manager) verwaltet wird. Zu dieser Kombination hatte ich keine Anleitung mit Interconnected Network (Internet) gefunden. Was habe ich gemacht? Das, was ich schon die ganze Woche über gemacht habe: Neuinstallation. Nachdem ich vom USB-Stick gebootet habe, brach die Installation mit einem Fehler ab. Ich dachte, dass es am USB-Stick liegen könnte. Somit bootete ich von einer Live-CD und lud mir die aktuelle ISO herunter. Diese habe ich dann dazu benutzt, meinen USB-Stick neu bootfähig zu machen. Es war allerdings kein Boot möglich. Wieder ein GRUB-Problem. Ich machte den Vorgang nochmals, aber diesmal mit dem Systemtool “Startmedienersteller” in System -> Systemverwaltung -> Startmedienersteller. Das gleiche Problem! Nun war ich es Leid und installierte 10.04 von meiner CD. Dies funktionierte. Danach installierte ich alle Updates und nach einem erfolgreichen Neustart machte ich ein Upgrade auf 10.10. Meine Software wurde installiert und auch hier wurden alle Updates eingespielt. Mir fiel außerdem auf, dass ich normal vom neuesten Kernel booten konnte. Das Heruntertakten meiner CPU, Plymouth und die Paketabhängigkeiten waren jetzt kein Problem mehr. Endlich war es geschafft - alles lief einwandfrei. So, wie es am Ende der vorherigen Woche war!

Die Krux an der ganzen Geschichte: Die neue Version 11.04 ”Natty Narwal” von Ubuntu kommt in 18 Tagen raus. Ich hoffe, dass dann eine Neuinstallation oder ein Upgrade problemlos funktioniert… Schönen restlichen Sonntag euch allen!

Word-Cloud: 2011-04-01

| Comments

Word-Clouds sind Bilder, die durch die unterschiedliche Größe der einzelnen Wörter hervorheben, welche am häufigsten in einem Text vorkommen. Die Word-Cloud meines Blogs des aktuellen Stands sieht man unten. Diese habe ich mit Wordle erstellt, als PDF gedruckt und dann in ein Bild umgewandelt, das ich dann noch richtig herum gedreht habe.

Das Ergebnis:

…ist leider nicht mehr verfügbar.

Dies ist übrigens kein Aprilscherz! ;-)

LaTeX-Template: Brief

| Comments

In Microsoft Word Briefe zu schreiben ist relativ aufwändig. Man muss die Empfängeradresse, mit vielem Ausprobieren, so platzieren, dass diese im Fenstercouvert lesbar ist. Es lassen sich in LaTeX auch Briefe nach der DIN-Norm erstellen.

Java: Benutzerdaten aus System lesen

| Comments

Für ein Programmierprojekt wollte ich verschiedene Benutzerdaten aus dem System lesen. Da ich Java benutzt habe, bezieht sich das Nachfolgende nur darauf. Die relevanten Benutzerdaten waren der Name des aktuell angemeldeten Nutzers und das Heimatverzeichnis des selbigen. Durch die beiden unten stehenden Methoden ist dies möglich.

Benutzername: “` public static String getUserName() {

            final String PATTERN = "user.name";
            return System.getProperties().getProperty(PATTERN);

} “`

Benutzer-Heimatverzeichnis: “` public static String getUserHomeDirectory() {

            final String PATTERN = "user.home";
            return System.getProperties().getProperty(PATTERN);

} “`

Code: Ich habe jeweils eine Methode geschrieben, die eine Zeichenfolge (String) zurückliefert. Beide Methoden sind öffentlich (public) und statisch (static), damit man überall darauf zugreifen kann, ohne ein Objekt zu erstellten. Die Variable PATTERN speichert den gewünschten Eintrag in den Einstellungen. Hierbei handelt es sich um eine sogenannte Map (Aufschrift: Inhalt, vergleichbar mit einem Telefonbuch). Die Methode System.getProperties().getProperty(String pattern) sucht nach dem Wert von PATTERN und gibt dessen Inhalt zurück (return).

Hinweis: Durch ein System.getProperties().list(System.out); kann man sich alle Einstellungen anzeigen lassen und diese entsprechend auswählen, indem man die Variable PATTERN ändert.