Как я могу программно "извлечь" связку ключей в 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
Другие вопросы по тегам