Festlegen eines Firmware-Passworts

Versuchen Sie derzeit, ein Skript (vorzugsweise Shell) zu verwenden, um das Firmware-Passwort bei einer neuen OSX-Installation einzurichten. Das habe ich offensichtlich gefunden:

http://osxdaily.com/2014/01/06/set-firmware-password-mac/

was bei einer manuellen Installation funktionieren würde, aber wir möchten dies so weit wie möglich automatisieren. Ich kann anscheinend keine Dokumentation zum Schreiben eines Skripts zum Einrichten eines (dynamischen) Firmware-Passworts finden.

Meine Frage ist:

Ist es möglich, ein Skript oder Programm zu verwenden, um ein dynamisches Firmware-Passwort unter OSX 10.8/10.9 einzurichten? Wenn ja, wissen Sie wie? Ist Ihnen eine Dokumentation bekannt?

Wenn Sie ein Firmware-Passwort in Betracht ziehen, empfehle ich Ihnen, auch dies und seine Antworten zu lesen. apple.stackexchange.com/questions/22275/…

Antworten (2)

Wenn Sie die versteckte „Recovery HD“-Partition im Terminal mounten:

sudo diskutil mount Recovery\ HD

und mounten Sie dann die "BaseSystem.dmg" erneut, indem Sie darauf doppelklicken:

Geben Sie hier die Bildbeschreibung ein

dann sollten Sie in der Lage sein, die , die sich in "Firmware Password Utility.app" befindet, zu verwenden setregproptool:

Geben Sie hier die Bildbeschreibung ein

Um zu dem Ordner zu gelangen, der setregproptool„Firmware Password Utility.app“ mit Rechtsklick (oder Control-Klick) enthält, wählen Sie „Paketinhalt anzeigen“ und navigieren Sie zu „Inhalt/Ressourcen“.

Alternativ zur Beschreibung in diesem Link:

Legen Sie ein Firmware-Passwort über die Befehlszeile fest - (siehe Beitrag vom "Sep 13, '11 05:04:00AM ")

Sie können „Firmware Password Utility.app“ an einen akzeptableren Ort kopieren (z. B. auf Ihr lokales Laufwerk) und es dann von dort aus verwenden.

Dies sind die Optionen von setregproptool:

$ sudo Firmware\ Password\ Utility.app/Contents/Resources/setregproptool -h
Password:
setregproptool v 2.0 (9) Aug 24 2013
Copyright (C) 2001-2010 Apple Inc.
All Rights Reserved.

Usage: setregproptool [-c] [-d [-o <old password>]] [[-m <mode> -p <password>] -o <old password>]

-c              Check whether password is enabled.
                        Sets return status of 0 if set, 1 otherwise.
-d              Delete current password/mode.
                        Requires current password on some machines.
-p              Set password.
                        Requires current password on some machines.
-m              Set security mode.
                        Requires current password on some machines.
                        Mode can be either "full" or "command".
                        Full mode requires entry of the password on
                        every boot, command mode only requires entry
                        of the password if the boot picker is invoked
                        to select a different boot device.

                When enabling the Firmware Password for the first
                time, both the password and mode must be provided.
                Once the firmware password has been enabled, providing
                the mode or password alone will change that parameter
                only.

-o              Old password.
                        Only required on certain machines to disable
                        or change password or mode. Optional, if not
                        provided the tool will prompt for the password.
Gute Antwort! Ich habe weitere Informationen darüber hinzugefügt, wie die Wiederherstellungs-Festplatte gemountet wird und wo BaseSystem.dmgund setregproptoolsich befinden.
Wenn Sie den Modus "full" verwenden, was mit der GUI nicht möglich ist, wird das Firmware-Passwort bei jedem Start abgefragt, und nicht nur, wenn ein anderes Bootgerät verwendet werden soll (der Modus "command", der mit der GUI verwendet wird ) .

Ich habe ein Shell-Skript erstellt, das den Trick macht

#!/bin/sh    
diskutil mount Recovery\ HD & wait
hdiutil attach -quiet -nobrowse /Volumes/Recovery\ HD/com.apple.recovery.boot/BaseSystem.dmg & wait
echo "What is the current Firmware password?"
read -s OLDPASSWORD
echo "What is the NEW Firmware password?"
read -s NEWPASSWORD
echo "Confirm the NEW Firmware password?"
read -s CONFIRMPASSWORD
while [ "$NEWPASSWORD" != "$CONFIRMPASSWORD" ]; 
    do
        read -s -p $'\x0aPasswords don\'t match. What is the NEW Firmware password?' NEWPASSWORD
        read -s -p $'\x0aConfirme the NEW Firmware password?' CONFIRMPASSWORD
    done

echo $'\x0aEnter the computer\'s admin password'
sudo /Volumes/OS\ X\ Base\ System/Applications/Utilities/Firmware\ Password\ Utility.app/Contents/Resources/setregproptool -m command -p $CONFIRMPASSWORD -o $OLDPASSWORD
diskutil unmount force Recovery\ HD & wait
echo "New Password is Set"

Das einzige Problem, das ich dabei gefunden habe, ist, dass es das Passwort im Klartext in das Konsolenprotokoll zurückschreibt.

Weiß jemand, wie man verhindert, dass es in den Konsolenprotokollen protokolliert wird?

Erscheint das Passwort im Konsolenprotokoll als Teil des sudo-Befehls? Wenn Sie das gesamte Shell-Skript mit sudo ausführen, können Sie sudo aus dem Befehl setregproptool entfernen. Eine andere Möglichkeit wäre, $CONFIRMPASSWORD in einer temporären Datei zu speichern und sie dann anstelle von $CONFIRMPASSWORD zu kategorisieren
Wie würde ich die gesamte Shell in sudo ausführen? Mach das vorher nie.
Angenommen, Ihr Skript ist "SetFirmware.sh", sudo SetFirmware.shwird zuerst nach dem Root-Passwort gefragt und dann das gesamte Skript als Root ausgeführt. Dann wird im Konsolenprotokoll nur noch der Dateiname SetFirmware.sh angezeigt.
Das hat funktioniert! Gibt es eine Möglichkeit, das in die Datei einzufügen, damit es eine anklickbare ausführbare Datei bleibt und nicht von einem anderen Terminalfenster aus sudo path/to/file muss?
Dies könnte helfen: stackoverflow.com/questions/5125907/… ... eigentlich, nein, es wird nicht helfen. Weil es das sudo nicht kann.