はじめに
最近、メインPCをMacBook Air m4に変えました。 今まで、Fedoraを使っていて、外付けSSDをveracryptで暗号化して使っています。
macOSでは、NTFSでフォーマットされたドライブは読み取り専用でしかマウントできません。
さらに、
VeraCrypt
で暗号化されたボリュームを使っている場合、復号後のマウントも手動で行う必要があり、非常に面倒です。
そこで今回は、VeraCryptボリュームを復号後に、自動でntfs-3gを使って再マウント(書き込み可能)するシェルスクリプトを紹介します。
準備
必要なもの
ntfs-3gのインストール
brew install ntfs-3g
/opt/homebrew/bin/ntfs-3g にインストールされます。
スクリプト
#!/bin/bash
# veracrypt-ntfs-remount.sh
MOUNT_POINT="/Volumes/Untitled"
if [ ! -d "$MOUNT_POINT" ]; then
sudo mkdir -p "$MOUNT_POINT"
fi
echo "[*] VeraCrypt ボリュームをマウントしてください (GUIでもOK)。"
echo " → マウントしたら Enter を押してください。"
read
# disk image (VeraCrypt復号後) を探して IDENTIFIER を抽出
DISK=$(diskutil list | awk '
$0 ~ /disk image/ {flag=1; next}
flag && $NF != "IDENTIFIER" {print $NF; exit}
')
if [ -z "$DISK" ]; then
echo "[!] VeraCrypt デバイスが見つかりません。diskutil list を確認してください。"
exit 1
fi
echo "[*] 検出したデバイス: /dev/$DISK"
# macOS 標準の読み取り専用マウントを解除
sudo diskutil unmount /dev/$DISK
# ntfs-3g で書き込み可能で再マウント
echo "[*] ntfs-3g で再マウント中..."
sudo /opt/homebrew/bin/ntfs-3g \
/dev/$DISK "$MOUNT_POINT" \
-olocal -oallow_other \
-ouid=$(id -u) -ogid=$(id -g) -oauto_xattr \
-ovolname=veracryptdrive
if [ $? -eq 0 ]; then
echo "[+] 正常に /dev/$DISK を $MOUNT_POINT に書き込み可能でマウントしました。"
else
echo "[!] マウントに失敗しました。"
fi
使い方
VeraCryptでボリュームをGUIからマウントします。
上記スクリプトを適当な名前で保存(
veracrypt-ntfs-mount.shなど)。ターミナルで実行:
./veracrypt-ntfs-mount.sh
注意点
macFUSEのインストールが必要な場合があります(brew install macfuse)。
初回使用時は、システム拡張の許可を「セキュリティとプライバシー」から行う必要があります。
1つのドライブでしか動作確認をしておりません。複数ドライブの場合の動作は保証しません。(多分動きません)