Come posso "espellere" a livello di codice un portachiavi su OS X?


4

Sto usando uno script per espellere una piccola chiave USB che utilizzo come unità di "identità", che contiene alcune informazioni sicure. Di nota, ha un file di OS X “portachiavi” su di esso, che contiene alcune delle mie password più sicure ed importanti (quelli che sono disposti a impegnarsi per un programma di gestione delle password a tutti , ma che sono troppo importanti per lasciare seduto sui miei computer o sincronizzati con Dropbox.)

Quel file portachiavi è un link simbolico da Apple ~/Library/Keychains/cartella per questa chiave di mio, diciamo, /Volumes/Key/SECURE.keychain. Quando espelle il disco, questo link simbolico scompare e il portachiavi ovviamente cessa di essere accessibile in Accesso portachiavi:

icona portachiavi mancante

Va tutto bene ... tranne che non riesco a espellere questo disco, senza chiudere metà dei programmi sul mio Mac. Per nessuna buona ragione che posso dire, qualsiasi applicazione che accede a qualsiasi Keychain per qualsiasi motivo, apre (e mantiene aperto) ogni singolo .keychainfile che il sistema conosce. Ad esempio, non appena collego il disco, quando nulla ha richiesto l'accesso a questo mio portachiavi secondario, sicuro:

> lsof '/Volumes/Key/SECURE.keychain'
COMMAND    PID         USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
Spotify   2801 elliottcable  txt    REG    1,8    89096  319 /Volumes/Key/SECURE.keychain
syncdefau 4267 elliottcable  txt    REG    1,8    89096  319 /Volumes/Key/SECURE.keychain

Come posso espellere in sicurezza questa unità, senza uccidere tutti i processi che hanno quel file aperto? Posso in qualche modo espellere il file dai processi, da remoto o qualcosa del genere?

(Correlato: ecco il mio approccio attuale, inaccettabile: https://github.com/elliottcable/System/blob/2a5917e/Dotfiles/profile#L73-L94 )

Risposte:


2

Solo i portachiavi sbloccati ti impediranno di smontare il volume su cui sono memorizzati. Se blocchi il portachiavi, sarai in grado di smontare senza problemi.

Per fare questo da una shell (script), usa lo strumento da riga di comando security:

security lock-keychain /Volumes/Key/SECURE.keychain

Ciò bloccherà il portachiavi e ti consentirà di smontare il volume (purché Accesso portachiavi non sia in esecuzione).


0

Non so perché quelle app mantengano il portachiavi, ma dovresti provare a forzare l'espulsione della chiave USB usando:

diskutil unmountDisk force /Volumes/Key

Senza alcun problema (purché l'applicazione non debba utilizzare quel file in alcun modo).


PS: se meriti di ricollegare il portachiavi ogni volta, potresti voler aggiungere il percorso del portachiavi a

~/Library/Preferences/com.apple.security.plist
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.