Как я могу программно "извлечь" связку ключей в OS X?
Я использую скрипт для извлечения небольшого USB-ключа, который я использую в качестве "идентификационного" диска, который содержит некоторую защищенную информацию. Следует отметить, что на нем есть файл "связки ключей" OS X, в котором содержатся некоторые из моих более безопасных и важных паролей (те, которые я готов посвятить программе управления паролями вообще, но которые слишком важны, чтобы оставлять их на месте). на моих компьютерах или синхронизированы с Dropbox.)
Этот файл связки ключей является символической ссылкой от Apple ~/Library/Keychains/
Папка для этого моего ключа, скажем, /Volumes/Key/SECURE.keychain
, Когда я извлекаю диск, эта символическая ссылка исчезает, и цепочка для ключей, очевидно, перестает быть доступной в рамках Keychain Access:
Это все хорошо... за исключением того, что я не могу извлечь этот диск, не закрыв половину программ на моем Mac. Я не могу сказать, что ни по какой веской причине любое приложение, которое получает доступ к любой цепочке для ключей по любой причине, открывает (и сохраняет как открытую) каждую .keychain
файл, о котором знает система. Например, как только я подключаю диск, когда ничто вообще не запрашивает доступ к этой вторичной, безопасной, моей цепочке ключей:
> 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
Как можно безопасно извлечь этот диск, не убивая каждый процесс, в котором этот файл открыт? Можно ли каким-то образом извлечь файл из процессов удаленно или что-то в этом роде?
(Связанный: Вот мой текущий, неприемлемый подход: https://github.com/elliottcable/System/blob/2a5917e/Dotfiles/profile)
2 ответа
Только разблокированные цепочки для ключей не дадут вам отключить том, на котором они хранятся. Если вы заблокируете брелок, вы сможете без проблем размонтировать его.
Чтобы сделать это из оболочки (скрипта), используйте инструмент командной строки security
:
security lock-keychain /Volumes/Key/SECURE.keychain
Это заблокирует цепочку для ключей и позволит вам отключить том (пока не работает Keychain Access).
Я не знаю, почему эти приложения сохраняют цепочку для ключей, но вы должны попытаться принудительно извлечь USB-ключ, используя:
diskutil unmountDisk force /Volumes/Key
Без каких-либо проблем (если приложение не использует этот файл каким-либо образом).
PS: Если вы заслуживаете повторного связывания цепочки для ключей каждый раз, вы можете добавить путь цепочки для ключей к
~/Library/Preferences/com.apple.security.plist