2009年8月29日 星期六

dm-crypt 與加密磁區容器

因為之前我新買不到一年的硬碟毫無預警地(HDD SMART 都還在良好)就壞掉了,所以我現在對所有的硬碟商都抱持不信任的態度,硬碟只能當作耗材。所以我昨天我又去買了一個隨身硬碟用來備分我的重要資料。不過隨身硬碟有一個問題就是為了要讓 Windows 也能讀取,所以我必需要讓隨身硬碟本身的檔案系統是 NTFS 或 FAT32,可是我又希望我在 Linux 之下的檔案屬性、權限不要亂動,所以我只好使用一個折衷的方案:建立一個容器,再把這一個容器當成 device,mount 到我的系統樹上面。在 Linux 之下,這很容易。

建立步驟:
  1. dd if=/dev/zero of=TARGET bs=1G count=40
  2. sudo mkfs.ext3 TARGET

使用步驟:
  1. sudo mkdir /media/DISKNAME
  2. sudo mount TARGET /media/DISKNAME -o loop
  3. ... (做你想做得事)
  4. sudo umount /media/DISKNAME
  5. sudo rmdir /media/DISKNAME


不過我後來又想到我想要把資料加密,因為我不想要我的資料被偷看。印象中有一個叫 dm-crypt 的 Linux 2.6 的模組可以把一個普通檔案映射成一個加密硬碟,只要 umount 之後,沒有你的密碼,誰也不能讀取。

事前準備:
  1. sudo aptitude install dmsetup cryptsetup
這二個套件一定要先安裝起來,dmsetup 是 device mapper 的工具;cryptsetup 是 dm_crypt 的工具。另外因為我用得 Linux 發行版是 Ubuntu (9.04),Ubuntu 有把 aes 還有 dm_crypt 編譯成模組,如果你的系統沒有把這二個功能編入核心,也沒有編為模組,你可能需要重新編譯你的 Linux Kernel。


掛載系統模組:
  1. sudo modprobe aes
  2. sudo modprobe dm_crypt


建立步驟:
  1. sudo dd if=/dev/zero of=TARGET bs=1G count=40
  2. sudo losetup /dev/loop0 TARGET
    備註: 這個步驟的 /dev/loop0 可以用任何一個 LOOP device 取代。
  3. sudo cryptsetup -y create CRYPTDEVNAME /dev/loop0 -c aes
    備註: 你必須要輸入密碼二次。
  4. sudo mkfs.ext3 /dev/mapper/CRYPTDEVNAME
  5. sudo cryptsetup remove CRYPTDEVNAME
  6. sudo losetup -d /dev/loop0


使用步驟:
  1. sudo losetup /dev/loop0 TARGET
  2. sudo cryptsetup create CRYPTDEVNAME /dev/loop0 -c aes
    備註: 即使你輸入的密碼是錯誤的也不會有任何提示。
  3. sudo mkdir /media/MNTNAME
  4. sudo mount /dev/mapper/CRYPTDEVNAME /media/MNTNAME
    備註: 如果這時有錯誤,不要急著修復檔案系統,如果亂動,資料就一去不復返了。這一個錯誤有可能是因為之前在 cryptsetup 的時候,你輸入的密碼是錯誤的,使用 cryptsetup remove,然後回到 2 重新輸入一次你的密碼。
  5. ... (做你想做得事)
  6. sudo umount /media/MNTNAME
  7. sudo rmdir /media/MNTNAME
  8. sudo cryptsetup remove CRYPTDEVNAME
  9. sudo losetup -d /dev/loop0
我稍微講解一下,losetup 是用來把一個檔案「掛載」成為 LOOP device 的指令,我們一開始要先把檔案「掛載」成一個「裝置」。然後,cryptsetup 是利用 device mapper (裝置對映) 功能來進行加密,所以經過一次對映之後,我們的裝置會出現在 /dev/mapper 之中,我們可以用 sudo dmsetup ls 來觀察。剩下的就是我們要把 /dev/mapper 之中的那一個裝置,mount 到我們的系統樹,也就是 / 的上面,我遵照 Ubuntu 的習慣把它 mount 在 /media 之中的一個子資料夾。

另外,第 8, 9 二步是不能少的,不然有 root 權限的有心人士不用輸入密碼也可以 mount 你的資料。

備註: 用 losetup mount 起來的 device,其根目錄是只有 root 才有寫入權限的,解決方法是在根目錄用 sudo mkdir 建立一個子目錄,然後用 sudo chown 把使用權轉移給其他使用者。


後讀工作(可選):
  1. sudo modprobe -r dm_crypt
  2. sudo modprobe -r aes
這二個步驟是要用來卸載 dm_crypt 還有 aes 這二個系統模組。

2 則留言:

  1. [quote]
    備註: 用 losetup mount 起來的 device,其根目錄是只有 root 才有寫入權限的,解決方法是在根目錄用 sudo mkdir 建立一個子目錄,然後用 sudo chown 把使用權轉移給其他使用者。
    [/quote]
    其實只要chown account:account /media/xxxx
    就可以了...

    回覆刪除
  2. My model assumes 우리카지노 SGHC to meet the mid-point of management steerage and margins to observe consensus estimates (since they revolve around management’s estimates). Where I differ slightly from the consensus is that I assume SGHC will recover again to 2021 ranges in 2024, and not exceed them. My assumptions are that the sports activities betting and on line casino gaming industries are increasing, and that the secular uptrend will eventually help SGHC in recovering. SGHC’s flagship model, Betway, operates as a global, online, sports-led betting model that's constantly positioned in all markets. This technique goals to use money spent on marketing on the nationwide, regional, and native ranges to assist the corporate as a complete.

    回覆刪除