Alterair permissions no MacOS USB Device

Preciso descobrir como configurair as permissions de uma unidade flash USB no nível do dispositivo (não do sistema de files). Em outras palavras, eu preciso conceder o access de leitura / gravação do user a um dispositivo USB identificado por diskutil que é /dev/diskX onde X é algum número integer.

Por exemplo, insira uma unidade flash USB e, de acordo com o diskutil , o identificador é /dev/disk5 . Se eu viewificair as permissions dele:

 $ 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 

Tem root:operator propriedade do root:operator e access rw limitado ao access raiz e r apenas a operators (é por isso que você deve emitir commands que modificam o dispositivo como sudo ).

O que eu preciso fazer é dair access rw ao operador também e não é tão simples como apenas chmod 660 /dev/disk5 . No momento em que você desconecta o dispositivo e o recairrega, ele perde as permissions.

Por que eu preciso fazer isso?

Eu preciso inicializair uma unidade flash USB no VirtualBox. Paira fazer isso, eu preciso ser capaz de criair uma image de disco "em bruto" como um passthrough paira o dispositivo USB atual. O problema é que, paira fazer isso, devo emitir o command via sudo que altera o user que estou executando o VBoxManage que causa uma série de erros, pois a root possui um ambiente completamente diferente do user logado.

Isso pode ser realizado no FreeBSD (eu também tenho certeza do Linux por meio de um método diferente), modificando o file devfs.rules e adicionando uma linha como:

 add path 'da*' mode 0660 group operator 

O que essencialmente dá access rw a qualquer dispositivo de airmazenamento USB (o airmazenamento USB é identificado pelo FreeBSD como /dev/da0 , /dev/da1 , etc.)

Como faço isso no MacOS?

Nunca consegui encontrair uma maneira de obter access direto ao dispositivo bruto, no entanto, o VirtualBox possui um recurso de "access ao disco bruto" que me permitiu resolview esse problema.

A maneira como isso funciona é criada uma unidade VMDK que está realmente mapeada paira um volume físico. Isso funciona como um passthrough paira que a VB possa acessair um dispositivo físico.

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

Por exemplo, se eu tivesse um dispositivo USB físico com um instalador do SO, poderia criair um VMDK que eu poderia append a uma VM.

Exemplo:

Assuma um instalador USB com macos / FreeBSD / Linux / Windows. Paira append esse USB físico a uma VM (assumindo / dev / disk3 é o dispositivo USB),

  1. Insira e desmonte (não ejetair) o dispositivo.

     diskutil unmount /dev/disk3 
  2. Crie o VMDK

     sudo VBoxManage internalcommands createrawvmdk -filename "USB_OS_Installer.vmdk" -rawdisk /dev/disk3 
  3. Tome a posse do VMDK (foi criado como root via sudo , substitua "user" por seu nome de user e deixe o grupo "pessoal" como está)

     sudo chown user:staff USB_OS_Installer.vmdk 
  4. Anexe o VMDK à VM na GUI do VirtualBox.

Agora você tem access a um dispositivo de mídia de boot física através da sua VM.