使用luks加密碟掛載時要重覆打一堆指令,很花時間,因此我就寫了個腳本,省去了打這些指令的時間…
若你還不知怎樣創建一個加密碟的話,請參照我這篇文章,先使用指令建立好加密碟之後再回頭來看我這篇文章。
底下這個腳本能協助你快速的掛載、卸載加密碟,相信能省去你不少時間
系統與桌面環境建議:Linux mint、mate
使用前請先調整裡面的變數設定
#!/bin/bash
#作者:夢見草 製作日期:2014/07/04 更新日期:2015/09/21
#系統需求:zenity、cryptsetup。該帳號必須要能使用sudo,並事先設好不問密碼。mkdir /mnt/luks
#簡要說明:此為gui介面幫你掛載、卸載luks加密碟,需自行準備好加密碟和掛載路徑,掛載時會跳出視窗來詢問密碼,輸錯密碼會跳出提示視窗,靜待3秒後就可再次輸入密碼,若在這3秒內按下enter則會離開程式.
################################變數定義###################
#請輸入你的加密碟所在位置
LUKS="/home/user/file.luks"
#自動尋找一個未使用的loop
#LOOP_DEV=$(sudo losetup -f)
#若只掛一個加密碟用上面的指令容易出錯,因此改用下面的指令比較不容易出錯。
LOOP_DEV=/dev/loop0
#使用者帳號與群組
USER=user
GROUP=user
#設定加密碟要掛載的路徑
MOUNTPATH=/mnt/luks
################################變數定義###################
CHOOSE=$(zenity --list --height=250 --text "請選擇你需要的功能:" --radiolist --column "功能" --column "說明" TRUE 1:掛載加密碟 FALSE 2:卸載加密碟|cut -d ':' -f 1)
#底下是比較精簡的寫法
#CHOOSE=$(zenity --list --column "LUKS加密碟" "load:掛載加密碟" "unload:卸載加密碟"|cut -d ':' -f 1)
case $CHOOSE in
1)
sudo losetup $LOOP_DEV $LUKS
PSWD=$(zenity --entry --title=LUKS --text=請輸入掛載密碼 --hide-text)
echo -e "$PSWD\n" |sudo cryptsetup luksOpen $LOOP_DEV luks
#底下的 until 是檢查密碼是否有輸錯誤, 輸錯密碼則 $? =\= 0
#因為必須要先執行過一次問密碼的動作,後面才能判斷回傳值是否輸入正確
until [ $? = 0 ]; do #若密碼輸錯,則重覆執行這個迴圈
PSWD=$(zenity --entry --title=LUKS --text=密碼輸錯了,請再次輸入掛載密碼 --hide-text)
echo -e "$PSWD\n" |sudo cryptsetup luksOpen $LOOP_DEV luks
#密碼輸錯則重覆跳出輸入視窗
if [ $? != 0 ] ; then
zenity --error --title=密碼錯誤 '--text=3秒後重新輸入密碼!\n或按enter離開!' --timeout=3
fi
done
#底下是密碼輸對之後接著掛載的動作
sudo mount /dev/mapper/luks $MOUNTPATH
sudo chown $USER.$GROUP $MOUNTPATH
zenity --info --title=LUKS --text=加密碟掛載成功! --timeout=3
sleep 3
caja $MOUNTPATH
;;
2)
#卸載加密碟
sudo umount $MOUNTPATH
sudo cryptsetup luksClose /dev/mapper/luks
sudo losetup -d /dev/loop0
zenity --info --text=已卸載加密碟 --timeout=3
;;
esac
使用以上腳本之後,你可在桌面建立一個啟動圖示,方便你快速的執行此腳本
滑右鍵點桌面→新增啟動圖示→指令的部份請填 bash /home/user/luks.sh
意即你這個腳本的檔案名稱,前面再加一個bash
再搭配以下圖示,就很好用了