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:
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 .keychain
file 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 )