Ändern Sie die Berechtigungen auf dem macOS-USB-Gerät

Ich muss herausfinden, wie ich die Berechtigungen eines USB-Flash-Laufwerks auf Geräteebene (nicht auf Dateisystemebene) festlegen kann. Mit anderen Worten, ich muss dem Benutzer Lese-/Schreibzugriff auf ein USB-Gerät gewähren, das dadurch gekennzeichnet diskutilist, /dev/diskXdass X eine Ganzzahl ist.

Zum Beispiel stecke ich ein USB-Flash-Laufwerk ein und laut diskutilseiner Kennung ist /dev/disk5. Wenn ich die Berechtigungen davon überprüfe:

$ ls /dev/disk5*
brw-r-----  1 root  operator    1,  15 May 15 08:35 /dev/disk5
brw-r-----  1 root  operator    1,  16 May 15 08:35 /dev/disk5s1
brw-r-----  1 root  operator    1,  17 May 15 08:35 /dev/disk5s2

root:operatorBesitz und Zugriff sind rwauf root und rZugriff auf operatorsnur beschränkt (aus diesem Grund müssen Sie Befehle ausgeben, die das Gerät als modifizieren sudo).

Was ich tun muss, ist, rwdem Operator auch Zugriff zu gewähren, und es ist nicht so einfach wie nur chmod 660 /dev/disk5. In dem Moment, in dem Sie das Gerät ausstecken und wieder einstecken, verliert es die Berechtigungen.

Warum muss ich das tun?

Ich muss ein USB-Flash-Laufwerk in VirtualBox booten. Dazu muss ich in der Lage sein, ein "rohes" Disk-Image als Passthrough zum eigentlichen USB-Gerät zu erstellen. Das Problem ist, dass ich dazu den Befehl absetzen muss, über sudoden sich dann der Benutzer ändert, den ich ausführe, VBoxManagewas eine Reihe von Fehlern verursacht, da er rooteine völlig andere Umgebung als der angemeldete Benutzer hat.

Dies kann in FreeBSD (ich bin sicher, Linux auch über eine andere Methode) erreicht werden, indem die devfs.rulesDatei geändert und eine Zeile wie die folgende hinzugefügt wird:

add path 'da*' mode 0660 group operator

Dies ermöglicht im Wesentlichen rwden Zugriff auf jedes USB-Speichergerät (USB-Speicher wird von FreeBSD als /dev/da0, /dev/da1, usw. identifiziert).

Wie mache ich das unter macOS?

Ich vermute, Sie müssten eine dauerhafte Autofs-Zuordnung vornehmen. macOS speichert sie möglicherweise im lokalen Verzeichnis (wie in LDAP).

Antworten (1)

Ich konnte nie einen Weg finden, um direkten Zugriff auf das Raw-Gerät zu erhalten, aber VirtualBox hat eine "Raw Disk Access"-Funktion, mit der ich dieses Problem umgehen konnte.

Dies funktioniert so, dass ein VMDK-Laufwerk erstellt wird, das tatsächlich einem physischen Volume zugeordnet ist. Dies fungiert als Passthrough, sodass VB auf ein physisches Gerät zugreifen kann.

VBoxManage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/disk#

Wenn ich beispielsweise ein physisches USB-Gerät mit einem Betriebssystem-Installationsprogramm hätte, könnte ich eine VMDK erstellen, die ich an eine VM anhängen könnte.

Beispiel:

Angenommen, ein USB-Installationsprogramm mit macOS/FreeBSD/Linux/Windows. Um diesen physischen USB an eine VM anzuschließen (vorausgesetzt, /dev/disk3 ist das USB-Gerät),

  1. Gerät ein- und aushängen (nicht auswerfen).

    diskutil unmount /dev/disk3
    
  2. Erstellen Sie das VMDK

    sudo VBoxManage internalcommands createrawvmdk -filename "USB_OS_Installer.vmdk" -rawdisk /dev/disk3
    
  3. Übernehmen Sie den Besitz der VMDK (sie wurde als root erstellt über sudo; ersetzen Sie „user“ durch Ihren Benutzernamen und lassen Sie die Gruppe „staff“ unverändert)

    sudo chown user:staff USB_OS_Installer.vmdk
    
  4. Hängen Sie das VMDK an die VM in der GUI von VirtualBox an.

Sie haben jetzt über Ihre VM Zugriff auf ein physisches Boot-Mediengerät.