luks掛載腳本

使用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

此腳本執行後的效果圖如下
zenity2

使用以上腳本之後,你可在桌面建立一個啟動圖示,方便你快速的執行此腳本
滑右鍵點桌面→新增啟動圖示→指令的部份請填 bash /home/user/luks.sh
意即你這個腳本的檔案名稱,前面再加一個bash
再搭配以下圖示,就很好用了
lock-folder

lock-folder2

本篇發表於 bash。將永久鏈結加入書籤。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *