Cambia permessi su macOS USB Device

2

Devo scoprire come impostare le autorizzazioni di un'unità flash USB a livello di dispositivo (non di file system). In altre parole, devo concedere l'accesso utente in lettura / scrittura a un dispositivo USB identificato da diskutil che è /dev/diskX dove X è un numero intero.

Ad esempio, inserisco un'unità flash USB e, in base a diskutil , l'identificatore è /dev/disk5 . Se controllo i permessi:

$ 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

Ha root:operator ownership e rw accesso limitato a root e r accesso a% solooperators (ecco perché è necessario emettere comandi che modificano il dispositivo come sudo ).

Quello che devo fare è dare anche l'accesso rw all'operatore e non è così semplice come chmod 660 /dev/disk5 . Nel momento in cui scolleghi il dispositivo e lo ricolleghi, perde le autorizzazioni.

Perché devo fare questo?

Ho bisogno di avviare una chiavetta USB in VirtualBox. Per fare ciò, devo essere in grado di creare un'immagine disco "grezza" come passthrough al dispositivo USB reale. Il problema è, per fare questo, devo impartire il comando tramite sudo che poi cambia l'utente che sto eseguendo VBoxManage che causa un numero di errori dal momento che root ha un ambiente completamente diverso dall'utente loggato.

Questo può essere realizzato in FreeBSD (sono sicuro che Linux sia anche con un metodo diverso) modificando il file devfs.rules e aggiungendo una riga come:

add path 'da*' mode 0660 group operator

Che dà essenzialmente rw di accesso a qualsiasi dispositivo di archiviazione USB (la memoria USB è identificata da FreeBSD come /dev/da0 , /dev/da1 , ecc.)

Come posso farlo su macOS?

    
posta Allan 15.05.2017 - 14:54
fonte

1 risposta

0

Non sono mai riuscito a trovare un modo per ottenere l'accesso diretto al dispositivo raw, tuttavia, VirtualBox ha una funzione di "accesso al disco grezzo" che mi ha permesso di aggirare questo problema.

Il modo in cui funziona è la creazione di un'unità VMDK effettivamente mappata su un volume fisico. Questo funge da passthrough in modo che VB possa accedere a un dispositivo fisico.

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

Ad esempio, se avessi un dispositivo USB fisico con un programma di installazione del sistema operativo, potrei creare un VMDK che potrei collegare a una VM.

Esempio:

Assumi un programma di installazione USB con macOS / FreeBSD / Linux / Windows. Per collegare l'USB fisico a una VM (supponendo che / dev / disk3 sia il dispositivo USB),

  1. Inserisci e smonta (non espelle) il dispositivo.

    diskutil unmount /dev/disk3
    
  2. Crea il VMDK

    sudo VBoxManage internalcommands createrawvmdk -filename "USB_OS_Installer.vmdk" -rawdisk /dev/disk3
    
  3. Diventa proprietario del VMDK (è stato creato come root tramite sudo , sostituisci "utente" con il tuo nome utente e lascia il gruppo "staff" così com'è)

    sudo chown user:staff USB_OS_Installer.vmdk
    
  4. Collega il VMDK alla VM nella GUI di VirtualBox.

Ora puoi accedere a un dispositivo multimediale di avvio fisico tramite la tua macchina virtuale.

    
risposta data 23.11.2017 - 19:16
fonte

Leggi altre domande sui tag