Hi, ich habe endlich genug Zeit gehabt, mir alles zum Thema cryptsetup noch mal in Ruhe durchgelesen, und wollte jetzt loslegen, mir nach der Debian - Anleitung [1] einige Partitionen zu basteln.
Leider bin ich an einer Stelle hängen geblieben:
Das Skript (als Beispiel)
/etc/init.d/cryptinit: if [ -b /dev/mapper/maildir ]; then /usr/bin/cryptsetup remove maildir fi /usr/bin/cryptsetup create maildir /dev/sda9
cryptsetup in Bezug auf das device richtig aufzurufen. Es muss natürlich vor fstab aufgerufen werden, was ich mit
# cd/etc/rcS.d # ln -s ../init.d/cryptinit S08cryptinit
entsprechend erledigen soll - nun habe ich da aber zwei Probleme: - rcS.d gibt es bei Fedora nicht, welches Verzeichnis ist dort das entsprechende? Wie gesagt, es soll for fstab geschehen.
- wie muss ich das Skript verändern, damit auch beim runterfahren cryptsetup remove maildir ausgeführt wird? Damit ich es also als K99cryptinit in das rcS.d Äquivalent legen kann?
Wie üblich für jede Hilfe dankbar, Roland
Hallo,
Roland Wolters wrote: [snip]
nun habe ich da aber zwei Probleme:
- rcS.d gibt es bei Fedora nicht, welches Verzeichnis ist dort das
entsprechende? Wie gesagt, es soll for fstab geschehen.
Es gibt für jedes Runlevel eigene Verzeichnisse in /etc/rc.d/:
$ ll /etc/rc.d/ insgesamt 68 drwxr-xr-x 2 root root 4096 14. Jul 00:03 init.d -rwxr-xr-x 1 root root 2352 17. Mär 00:43 rc drwxr-xr-x 2 root root 4096 14. Jul 00:03 rc0.d drwxr-xr-x 2 root root 4096 14. Jul 00:03 rc1.d drwxr-xr-x 2 root root 4096 14. Jul 00:03 rc2.d drwxr-xr-x 2 root root 4096 14. Jul 00:03 rc3.d drwxr-xr-x 2 root root 4096 14. Jul 00:03 rc4.d drwxr-xr-x 2 root root 4096 14. Jul 00:03 rc5.d drwxr-xr-x 2 root root 4096 14. Jul 00:03 rc6.d -rwxr-xr-x 1 root root 220 23. Jun 2003 rc.local -rwxr-xr-x 1 root root 25402 12. Jul 21:36 rc.sysinit
In rc.local kannst du das leider nicht eintragen, da diese Datei nach allen anderen aufgerufen wird, es in rc.sysinit einzutragen wäre "unsauber". Dein Skript muss also für jedes Runlevel (bis auf 0 und 6) gestartet werden, und somit musst du je einen Link in den entsprechenden Verzeichnissen erstellen. Dumm ist dabei nur, dass einmal beim booten starten ja ausreicht, so würde das Skript bei jedem Runlevel-Wechsel gestartet werden.
Hat da jemand noch andere Ideen?
- wie muss ich das Skript verändern, damit auch beim runterfahren
cryptsetup remove maildir ausgeführt wird? Damit ich es also als K99cryptinit in das rcS.d Äquivalent legen kann?
da könntest du zwei Links erstellen (in /etc/rc.d/rc0.d und /etc/rc.d/rc6.d), die zum Beispiel K99cryptinit heißen. Im Skript selbst steht in der Variable $0 das Kommando, mit dem es aufgerufen wurde. Wenn das Skript über den Link aufgerufen wurde z.B. "/etc/rc.d/rc0.d/K99cryptinit" (bzw. rc6.d).
Entsprechend modifiziertes Skript (/etc/init.d/cryptinit):
if [ -b /dev/mapper/maildir ]; then /usr/bin/cryptsetup remove maildir fi if [ -z `echo $0 | grep "K99cryptinit" ]; then /usr/bin/cryptsetup create maildir /dev/sda9 fi
Die if-Abfrage bewirkt, dass "cryptsetup create maildir" nur aufgerufen wird, wenn das Skript *nicht* mit "K99cryptinit" gestartet wird.
Alternativ kannst du natürlich auch ein zweites Skript erstellen, das nur für Shutdown/Reboot zuständig ist.
Wie üblich für jede Hilfe dankbar, Roland
Ich hoffe, dass das halbwegs verständlich war. Ansonsten nochmal nachfragen...
Grüße, Andreas
P.S. Muss cryptsetup überhaupt beim Runterfahren aufgerufen werden? Ich kenne mich damit nicht aus.
Andreas Mueller wrote:
In rc.local kannst du das leider nicht eintragen, da diese Datei nach allen anderen aufgerufen wird, es in rc.sysinit einzutragen wäre "unsauber". Dein Skript muss also für jedes Runlevel (bis auf 0 und 6) gestartet werden, und somit musst du je einen Link in den entsprechenden Verzeichnissen erstellen. Dumm ist dabei nur, dass einmal beim booten starten ja ausreicht, so würde das Skript bei jedem Runlevel-Wechsel gestartet werden.
Hat da jemand noch andere Ideen?
Ich ;-) Mir fällt gerade auf, dass die Dateisyteme schon in rc.sysinit gemountet werden, Du wirst also nicht um das bearbeiten dieser Datei herumkommen.
Andere Ideen?
Grüße, Andreas.
On Fri, 16 Jul 2004 00:31:20 +0200, Andreas Mueller wrote:
Dein Skript muss also für jedes Runlevel (bis auf 0 und 6) gestartet werden, und somit musst du je einen Link in den entsprechenden Verzeichnissen erstellen. Dumm ist dabei nur, dass einmal beim booten starten ja ausreicht, so würde das Skript bei jedem Runlevel-Wechsel gestartet werden.
Das wird es nicht. Nur die Differenz der Mengen der S/K Skripte wird bei einem Runlevel-Wechsel ausgeführt.
Michael Schwendt wrote:
On Fri, 16 Jul 2004 00:31:20 +0200, Andreas Mueller wrote:
Dein Skript muss also für jedes Runlevel (bis auf 0 und 6) gestartet werden, und somit musst du je einen Link in den entsprechenden Verzeichnissen erstellen. Dumm ist dabei nur, dass einmal beim booten starten ja ausreicht, so würde das Skript bei jedem Runlevel-Wechsel gestartet werden.
Das wird es nicht. Nur die Differenz der Mengen der S/K Skripte wird bei einem Runlevel-Wechsel ausgeführt.
Sicher? Warum werden dann bei einem Wechsel von 5 auf 3 (und umgekehrt) z.B. irqbalance und anacron nochmal gestartet, obwohl diese bei Runlevel 3 *und* 5 je ein S-Skript haben und kein K-Skript?
Grüße, Andreas
On Fri, 2004-07-16 at 10:44, Andreas Mueller wrote:
Michael Schwendt wrote:
On Fri, 16 Jul 2004 00:31:20 +0200, Andreas Mueller wrote:
Dein Skript muss also für jedes Runlevel (bis auf 0 und 6) gestartet werden, und somit musst du je einen Link in den entsprechenden Verzeichnissen erstellen. Dumm ist dabei nur, dass einmal beim booten starten ja ausreicht, so würde das Skript bei jedem Runlevel-Wechsel gestartet werden.
Das wird es nicht. Nur die Differenz der Mengen der S/K Skripte wird bei einem Runlevel-Wechsel ausgeführt.
Sicher? Warum werden dann bei einem Wechsel von 5 auf 3 (und umgekehrt) z.B. irqbalance und anacron nochmal gestartet, obwohl diese bei Runlevel 3 *und* 5 je ein S-Skript haben und kein K-Skript?
Weil beide Startskripte nicht prüfen, ob sie schon laufen sollen -- du kannst ja einen Bugzilla-Report aufmachen...
Nils
On Fri, 16 Jul 2004 11:24:15 +0200, Nils Philippsen wrote:
On Fri, 2004-07-16 at 10:44, Andreas Mueller wrote:
Michael Schwendt wrote:
On Fri, 16 Jul 2004 00:31:20 +0200, Andreas Mueller wrote:
Dein Skript muss also für jedes Runlevel (bis auf 0 und 6) gestartet werden, und somit musst du je einen Link in den entsprechenden Verzeichnissen erstellen. Dumm ist dabei nur, dass einmal beim booten starten ja ausreicht, so würde das Skript bei jedem Runlevel-Wechsel gestartet werden.
Das wird es nicht. Nur die Differenz der Mengen der S/K Skripte wird bei einem Runlevel-Wechsel ausgeführt.
Sicher? Warum werden dann bei einem Wechsel von 5 auf 3 (und umgekehrt) z.B. irqbalance und anacron nochmal gestartet, obwohl diese bei Runlevel 3 *und* 5 je ein S-Skript haben und kein K-Skript?
Weil beide Startskripte nicht prüfen, ob sie schon laufen sollen -- du kannst ja einen Bugzilla-Report aufmachen...
Das wäre noch ein zusätzliches Feature und abhängig von der Funktion der Skripte. Sie würden bereits gar nicht aufgerufen, wenn die Lockdatei in /var/log/subsys existiert.
Michael Schwendt wrote:
On Fri, 16 Jul 2004 11:24:15 +0200, Nils Philippsen wrote:
On Fri, 2004-07-16 at 10:44, Andreas Mueller wrote:
Sicher? Warum werden dann bei einem Wechsel von 5 auf 3 (und umgekehrt) z.B. irqbalance und anacron nochmal gestartet, obwohl diese bei Runlevel 3 *und* 5 je ein S-Skript haben und kein K-Skript?
Weil beide Startskripte nicht prüfen, ob sie schon laufen sollen -- du kannst ja einen Bugzilla-Report aufmachen...
Das wäre noch ein zusätzliches Feature und abhängig von der Funktion der Skripte. Sie würden bereits gar nicht aufgerufen, wenn die Lockdatei in /var/log/subsys existiert.
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Grüße, Andreas.
On Fri, 2004-07-16 at 16:07, Andreas Mueller wrote:
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Nö ;-)
Once upon a time Nils Philippsen wrote:
On Fri, 2004-07-16 at 16:07, Andreas Mueller wrote:
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Nö ;-)
Schade - kann mir dann jmand sagen, was in etwa da rein muss? Denn da betrete ich weitestgehend unbekanntes Land, und ich möchte da untgerne zu viel rumpfuschen....
Ich denke mal, der bewußte Eintrag sollte dann spätestens hier:
# Mount all other filesystems (except for NFS and /proc, which is already # mounted). Contrary to standard usage, # filesystems are NOT unmounted in single user mode.
erfolgen, wenn nicht noch vor dem Aufgreifen der Raid Systeme:
# Possibly update quotas if fsck was run on /.
Würde es reichen, davor dann die Zeilen
/etc/init.d/cryptinit: if [ -b /dev/mapper/maildir ]; then /usr/bin/cryptsetup remove maildir fi /usr/bin/cryptsetup create maildir /dev/sda9
(bzw. mehrere davon, für jedes device einzeln) einzutragen?
Was ist mit dem shutdown des Rechners? Dort muss dann ja, wie schon geschrieben, irgendwo
cryptsetup remove maildir
aufgerufen werden - wo bringe ich das unter? Irgendo unter /etc/rc.d/rc0.d ?
Roland
Roland Wolters wrote:
Once upon a time Nils Philippsen wrote:
On Fri, 2004-07-16 at 16:07, Andreas Mueller wrote:
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Nö ;-)
Schade - kann mir dann jmand sagen, was in etwa da rein muss? Denn da betrete ich weitestgehend unbekanntes Land, und ich möchte da untgerne zu viel rumpfuschen....
Ich denke mal, der bewußte Eintrag sollte dann spätestens hier:
Denke ich auch.
# Mount all other filesystems (except for NFS and /proc, which is already # mounted). Contrary to standard usage, # filesystems are NOT unmounted in single user mode.
erfolgen, wenn nicht noch vor dem Aufgreifen der Raid Systeme:
# Possibly update quotas if fsck was run on /.
Würde es reichen, davor dann die Zeilen
/etc/init.d/cryptinit: if [ -b /dev/mapper/maildir ]; then /usr/bin/cryptsetup remove maildir fi /usr/bin/cryptsetup create maildir /dev/sda9
(bzw. mehrere davon, für jedes device einzeln) einzutragen?
Ja.
Was ist mit dem shutdown des Rechners? Dort muss dann ja, wie schon geschrieben, irgendwo
cryptsetup remove maildir
aufgerufen werden - wo bringe ich das unter? Irgendo unter /etc/rc.d/rc0.d ?
Ja, und in /etc/rc.d/rc6.d (Reboot). Ich denke, dass das ganze nach dem umount ausgeführt werden soll, also nach S01halt bzw S01reboot.
Grüße, Andreas
On Friday 16 July 2004 17:38, Nils Philippsen wrote:
On Fri, 2004-07-16 at 16:07, Andreas Mueller wrote:
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Nö ;-)
Doch. (naja, vielleicht nicht eleganter, aber weniger problematisch bei Updates)
in der fstab als Option noauto angeben und im init skript explizit mounten
Symlinks zur Identifizierung der Devices wäre sinnvoll, z.B.
ln -s /dev/dmcrypt/maildir /dev/mapper/maildir
und dann
cat /etc/fstab | awk '/^/dev/dmcrypt/ { print $1 }' | xargs -i mount {}
Once upon a time Ronny Buchmann wrote:
On Friday 16 July 2004 17:38, Nils Philippsen wrote:
On Fri, 2004-07-16 at 16:07, Andreas Mueller wrote:
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Nö ;-)
Doch. (naja, vielleicht nicht eleganter, aber weniger problematisch bei Updates)
in der fstab als Option noauto angeben und im init skript explizit mounten
Das ist aber genau das, was ich nicht möchte, da es ja mein Ziel ist, das ganze möglichst einfach in das System zu integrieren - ohne auf solche "krummen Wege" zurückzugreifen.
Symlinks zur Identifizierung der Devices wäre sinnvoll, z.B.
ln -s /dev/dmcrypt/maildir /dev/mapper/maildir
Was bezweckst du damit? Wohlgemerkt, ich möchte cryptsetup nutzen...
cat /etc/fstab | awk '/^/dev/dmcrypt/ { print $1 }' | xargs -i mount {}
Gut, die Zeile liegt aktuell noch außerhalb meiner Reichweite des Verständnisses... Es muss doch einfacher gehen, ich meine, gibt es unter Fedora kein Äquivalent zum Verzeichnis /etc/rcS.d ?
Roland
Roland Wolters wrote:
Symlinks zur Identifizierung der Devices wäre sinnvoll, z.B.
ln -s /dev/dmcrypt/maildir /dev/mapper/maildir
Was bezweckst du damit? Wohlgemerkt, ich möchte cryptsetup nutzen...
Zumal es auch nicht sonderlich sinnvoll ist, in /dev/mapper/ das benötigte block device "maildir" zu blockieren...
Regards, Stefan
On Saturday 17 July 2004 18:52, Roland Wolters wrote:
Once upon a time Ronny Buchmann wrote:
On Friday 16 July 2004 17:38, Nils Philippsen wrote:
On Fri, 2004-07-16 at 16:07, Andreas Mueller wrote:
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Nö ;-)
Doch. (naja, vielleicht nicht eleganter, aber weniger problematisch bei Updates)
in der fstab als Option noauto angeben und im init skript explizit mounten
Das ist aber genau das, was ich nicht möchte, da es ja mein Ziel ist, das ganze möglichst einfach in das System zu integrieren - ohne auf solche "krummen Wege" zurückzugreifen.
Symlinks zur Identifizierung der Devices wäre sinnvoll, z.B.
ln -s /dev/dmcrypt/maildir /dev/mapper/maildir
Was bezweckst du damit? Wohlgemerkt, ich möchte cryptsetup nutzen...
ups, natürlich anders rum ln -s /dev/mapper/maildir /dev/dmcrypt/maildir
(LVM2 macht das ähnlich)
cat /etc/fstab | awk '/^/dev/dmcrypt/ { print $1 }' | xargs -i mount {}
Gut, die Zeile liegt aktuell noch außerhalb meiner Reichweite des Verständnisses...
alle /dev/dmcrypt/* Devices mounten (dafür die symlinks)
anbei ein komplettes init-Skript, das erwartet Einträge in fstab und dmcrypttab in folgender Form:
/etc/fstab: /dev/dmcrypt/maildir /home/userx/Maildir defaults,noauto 0 0
/etc/dmcrypttab: #<device> <name> pairs for cryptsetup /dev/sda9 maildir
Eigentlich wäre das Ganze ja ein Thema für fedora-devel ...
Once upon a time Ronny Buchmann wrote:
On Saturday 17 July 2004 18:52, Roland Wolters wrote:
Once upon a time Ronny Buchmann wrote:
On Friday 16 July 2004 17:38, Nils Philippsen wrote:
On Fri, 2004-07-16 at 16:07, Andreas Mueller wrote:
Das löst aber immer noch nicht das Problem, dass cryptsetup vor dem Mounten aufgerufen werden muss, gibt es da eine elegantere Möglichkeit, als in /etc/rc.d/rc.sysinit rumzupfuschen?
Nö ;-)
Doch. (naja, vielleicht nicht eleganter, aber weniger problematisch bei Updates)
in der fstab als Option noauto angeben und im init skript explizit mounten
Das ist aber genau das, was ich nicht möchte, da es ja mein Ziel ist, das ganze möglichst einfach in das System zu integrieren - ohne auf solche "krummen Wege" zurückzugreifen.
Symlinks zur Identifizierung der Devices wäre sinnvoll, z.B.
ln -s /dev/dmcrypt/maildir /dev/mapper/maildir
Was bezweckst du damit? Wohlgemerkt, ich möchte cryptsetup nutzen...
ups, natürlich anders rum ln -s /dev/mapper/maildir /dev/dmcrypt/maildir
Gut, ich verstehe aber immer noch nicht ganz, warum man das braucht - warum nicht direkt auf /dev/mapper/maildir zugreifen?
anbei ein komplettes init-Skript, das erwartet Einträge in fstab und dmcrypttab in folgender Form: [...]
Auf jedem Fall danke für die Mühe, auch wenn ich noch nicht jeden Schritt nachvollziehen kann.
Nur, damit ich alle Schritte klar verstehe: Ich kopiere das Skript nach /etc/init.d, setze es außerdem noch auf /etc/rc0.d/Kxy, rc6.d/Kxy, rc3.d/Sxy und rc5.d/Sxy und wandle zu guter Letzt die fstab um (was mir um ehrlich zu sein nicht gefällt, aber in der Not...). Dabei sind die xy jeweils sinnvolle Zahlen, z.B. für jedes Level je 01.
Richtig?
Eigentlich wäre das Ganze ja ein Thema für fedora-devel ...
Die Diskussion dort lief so weit ich das verfolgt habe im Thread http://www.redhat.com/archives/fedora-devel-list/2004-July/msg00251.html Aber wirklich was raus gewinnen konnte ich da nicht. Außer, dass dort etwas angesprochen wird, was ich auch unterstützen würde.
Ich weiss daher zum Beispeil überhaupt erst von cryptsetup.
Hintergrund meiner Anfrage ist, dass ich in den nächsten Tagen einen Rechner mit verschlüsseltem /home aufsetzen wollte, und dafür für mich selbst eine Schritt-für-Schritt Anleitung schreiben wollte, die ich danach dann auch hier und an diversen anderen Stellen posten wollte. Die Idee an sich stammt aus meinen alten Suse Zeiten - dort klickt man bei der Installationsroutine bei Bedarf an einer Stelle nur ein "encrypted" an, und fertig - so etwas hätte ich im Abschluss gerne.... :/
Roland
On Sunday 18 July 2004 19:50, Roland Wolters wrote:
ups, natürlich anders rum ln -s /dev/mapper/maildir /dev/dmcrypt/maildir
Gut, ich verstehe aber immer noch nicht ganz, warum man das braucht - warum nicht direkt auf /dev/mapper/maildir zugreifen?
Es ist einfach eine simple Methode um rauszufinden, welches Device verschlüsselt ist.
anbei ein komplettes init-Skript, das erwartet Einträge in fstab und dmcrypttab in folgender Form: [...]
Auf jedem Fall danke für die Mühe, auch wenn ich noch nicht jeden Schritt nachvollziehen kann.
Nur, damit ich alle Schritte klar verstehe: Ich kopiere das Skript nach /etc/init.d, setze es außerdem noch auf /etc/rc0.d/Kxy, rc6.d/Kxy, rc3.d/Sxy und rc5.d/Sxy und wandle zu guter Letzt die fstab um (was mir um ehrlich zu sein nicht gefällt, aber in der Not...). Dabei sind die xy jeweils sinnvolle Zahlen, z.B. für jedes Level je 01.
kopieren, chmod +x, und dann chkconfig --add cryptfs chkconfig cryptfs on
Once upon a time Ronny Buchmann wrote:
On Sunday 18 July 2004 19:50, Roland Wolters wrote:
Nur, damit ich alle Schritte klar verstehe: Ich kopiere das Skript nach /etc/init.d, setze es außerdem noch auf /etc/rc0.d/Kxy, rc6.d/Kxy, rc3.d/Sxy und rc5.d/Sxy und wandle zu guter Letzt die fstab um (was mir um ehrlich zu sein nicht gefällt, aber in der Not...). Dabei sind die xy jeweils sinnvolle Zahlen, z.B. für jedes Level je 01.
kopieren, chmod +x, und dann chkconfig --add cryptfs chkconfig cryptfs on
Sicher, ganz vergessen - ok, vielen Dank, das wird dann in den nächsten Tagen getestet, ich werde ausführlich berichten :-)
Roland
On Fri, 16 Jul 2004 10:44:32 +0200, Andreas Mueller wrote:
Michael Schwendt wrote:
On Fri, 16 Jul 2004 00:31:20 +0200, Andreas Mueller wrote:
Dein Skript muss also für jedes Runlevel (bis auf 0 und 6) gestartet werden, und somit musst du je einen Link in den entsprechenden Verzeichnissen erstellen. Dumm ist dabei nur, dass einmal beim booten starten ja ausreicht, so würde das Skript bei jedem Runlevel-Wechsel gestartet werden.
Das wird es nicht. Nur die Differenz der Mengen der S/K Skripte wird bei einem Runlevel-Wechsel ausgeführt.
Sicher? Warum werden dann bei einem Wechsel von 5 auf 3 (und umgekehrt) z.B. irqbalance und anacron nochmal gestartet, obwohl diese bei Runlevel 3 *und* 5 je ein S-Skript haben und kein K-Skript?
Weil diese Skripte nach erfolgreichem Ausführen keine Lockdatei in /var/lock/subsys anlegen.
de-users@lists.fedoraproject.org