スクリプトを使用して、「ID」ドライブとして使用する小さなUSBキーを取り出しています。このキーには、安全な情報が含まれています。注目すべきことに、OS Xの「キーチェーン」ファイルがあります。このファイルには、私のより安全で重要なパスワード(パスワード管理プログラムにコミットしたいもの)が含まれています。 しかし、これは重要すぎて、コンピューターに座ったままにしたり、Dropboxに同期したりすることはできません。)
そのキーチェーンファイルは、Appleの~/Library/Keychains/
フォルダから私のこのキー(たとえば、/Volumes/Key/SECURE.keychain
)にシンボリックリンクされています。ディスクを取り出すと、このシンボリックリンクが消え、キーチェーンアクセス内でキーチェーンにアクセスできなくなります。
これはすべてうまくいっています…Macのプログラムの半分を終了せずにこのディスクをejectできないことを除いて。私が知ることができる正当な理由はありませんが、anyのキーチェーンにアクセスするすべてのアプリケーションany理由、システムが認識しているすべての.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
そのファイルを開いているすべてのプロセスをkillingせずに、このドライブを安全に排出するにはどうすればよいですか?どういうわけか、ファイルをプロセスから、リモートで、またはその性質のものから排出できますか?
(関連:これが私の現在の受け入れられないアプローチです: https://github.com/elliottcable/System/blob/2a5917e/Dotfiles/profile#L73-L94 )
ロック解除されたキーチェーンのみが、保存されているボリュームをアンマウントできなくなります。キーチェーンをロックすると、問題なくアンマウントできます。
シェル(スクリプト)からこれを行うには、コマンドラインツールsecurity
を使用します。
security lock-keychain /Volumes/Key/SECURE.keychain
これにより、キーチェーンがロックされ、ボリュームをアンマウントできるようになります(キーチェーンアクセスが実行されていない場合)。
これらのアプリがキーチェーンを保持する理由はわかりませんが、次の方法を使用してUSBキーを強制的に取り出す必要があります。
diskutil unmountDisk force /Volumes/Key
問題なく(それらのアプリケーションがそのファイルを使用してはならない限り)。
追伸:毎回キーチェーンを再リンクする価値がある場合は、キーチェーンのパスをに追加することをお勧めします
~/Library/Preferences/com.Apple.security.plist