staging.inyokaproject.org

Ein Passwort unter grub2 erstellen: grubpass v1.0

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

blijzijn

Anmeldungsdatum:
19. Oktober 2010

Beiträge: Zähle...

Hallo!

Ich habe ein Programm geschrieben, was die Passworterstellung für GRUB2 vereinfachen soll. Leider klappte es bei mir nicht so gut mit grub-mkpasswd-pbkdf2. Wer will, kann sich ja daran versuchen. Bisher kann nur ein Benutzer erstellt werden.

Getestet habe ich das mit einer VM, worauf Ubuntu 11.04 und Windows XP installiert ist.

Wer mag, kann es ausprobieren: https://sourceforge.net/projects/grubpass/files/grubpass%20v1.0/grubpass.v1.tar.gz/download

..Programm bitte mit sudo ausführen.

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Nur mal eine Frage - das hier hast Du gelesen??

gruß syscon-hh

blijzijn

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2010

Beiträge: Zähle...

Jo, das kenne ich. Wie gesagt, es soll eine Vereinfachung sein.

EDIT: Oder was möchtest du mir mit dem Link etwas anderes sagen?

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Meine Frage (Gedanken) war nur dahin gehend, was passiert bei einem Kernel-Update. Man muss es dann auch wieder neu einspielen - oder?

Ich kann das Skript leider nicht testen - es läuft einfach nicht durch, es meckert nach

  • Verzeichnis nicht gefunden ....

Oder das README ist nicht richtig bzw. unvollständig. Also wo werden die Veränderungen eingespielt. Zeige mal die relevanten (fertigen) Passagen aus der grub.cfg her bzw. die Veränderungen in Skript 10_linux.

blijzijn

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2010

Beiträge: 11

Ich hab auch bemerkt, dass es statt "./grubpass" –>>> "sudo ./grubpass" heißen muss.. Also bei nem kernelupdate wird der neuste kernel geschützt... der alte nicht, weil es leider in nem submenu ist.

Benutzer heißt hier jetzt "test". Bei "all":

1
 printf "menuentry '${title}' ${CLASS} --users test {\n" "${os}" "${version}"

..und beim recovery:

EDIT:

1
2
3
4
5
  if ${recovery} ; then
printf "menuentry '${title}' --users test ${CLASS} {\n" "${os}" "${version}"
else
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
fi

obiges ist aus der 10_linux

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi blijzijn,

wenn du dein Projekt unter GPLv3 veroeffentlichen moechtest, fuege bitte den vollstaendigen Quellcode an.

Gruss Lasall

blijzijn

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2010

Beiträge: 11

Hallo. Der Quellcode befindet sich im src Ordner. Leider weiß ich nicht, wie man den bei sf anzeigen lassen kann. Könnte mir jemand nen Tipp geben, wie? Ich hab nämlich die Sache mit git nicht so ganz raus.

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Hallo blijzijn - soweit verstanden. Nur noch ein paar Anmerkungen, wie Du das vor Updates absichern kannst (also nachfolgend eine Übersicht, über die Maßnahmen, die ich manuell bei mir durchgeführt habe):

  • Skript umbennenen

Da bei einem Update von GRUB_2 Komponenten auch das Skript 10_linux betroffen sein kann, habe ich das geänderte Skript in in 09X_linux umbenannt und dort dann eingebracht:

1
2
3
### FIXME Ergänzungen zur eigenen Nutzung
[ -f /etc/grub.d/10_linux ] && chmod -x /etc/grub.d/10_linux > /dev/null
###

Dieses direkt oben unter der Shebang, damit das Original nicht mehr aktiv werden kann bzw. nach einem Update gleich abgeschaltet wird.

Also bei nem kernelupdate wird der neuste kernel geschützt... der alte nicht, weil es leider in nem submenu ist.

Das habe ich dadurch abgefangen, indem ich für pbkdf2 für alle User die Daten in /boot/pbkdf2.lst und die Abfrage(n) im Skript 01_pbkdf2 untergebracht habe. Dieses wird sofort beim Aufrufen von GRUB_2 gestartet und sobald man in das Submenü eintritt, die Daten auch von dort abgerufen (ich hoffe, dass das bald mal gefixt wird 718670- ich bin da mit Colin im Gespräch).

Die Submenü-Abfrage der Userdaten wird dann auch im modifizierten Skript 10_linux (fast ganz unten) eingebracht (hier Zeile 3):

1
2
3
4
5
  if [ "$list" ] && ! $in_submenu; then
    echo "submenu \"Previous Linux versions\" {"
    echo "abfrage_pbkdf2"
    in_submenu=:
  fi

blijzijn

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2010

Beiträge: 11

Danke! Ich werde, sofern ich n bisschen mehr Luft habe mich darum kümmern ☺

Antworten |