linux上使用eCryptFS加密資料夾的方法

2021-07-09 13:09:09 字數 3181 閱讀 8874

從前有乙個攝影師,他不懂加密重要檔案,也不懂修電腦,結果***。以下就介紹下linux的加密方法及ecryptfs;

加密的型別

我們基本上有兩種不同的方法可以對檔案和目錄進行加密。一種方法是,檔案系統級加密,只有某些檔案或目錄(比如/home/alice)選擇性地加密。在我看來,這是一種理想的入門方法。你沒必要重新安裝一切來啟用或測試加密。不過,檔案系統級加密存在一些缺點。比如說,許多現代的應用程式將檔案(或檔案的部分內容)快取在硬碟中的未加密區域,比如交換分割槽、/tmp和/var資料夾,它們會導致隱私洩密。

另一種方法是所謂的全磁碟加密,這意味著整個磁碟都經過了加密(主引導記錄可能除外)。全磁碟加密在物理磁碟層面實現;寫入到磁碟上的每個位元資料都經過了加密,從磁碟讀取的任何資料自動實時解密。這可以防止任何人可能未經授權就訪問未加密的資料,並且確保整個檔案系統裡面的所有資料都經過了加密,包括交換分割槽或任何臨時快取的資料。

可用的加密工具

在linux中實施加密機制有幾種辦法。我在本教程中將介紹一種選擇:ecryptfs堆疊加密檔案系統工具。下面整理出了幾種可用的linux加密工具,僅供參考。

檔案系統級加密

•encfs:這是嘗試加密的最容易的方法之一。encfs作為堆疊檔案系統來執行,所以你只要建立乙個加密的資料夾,將它掛載到資料夾上即可使用。

•ecryptfs:作為一款與posix相容的加密檔案系統,ecryptfs的工作方式與encfs如出一轍,所以你得掛載它。

全磁碟加密

•loop-aes:這是最古老的磁碟加密方法。它執行起來速度很快,可以在舊系統(比如核心2.0分支版本)上使用。

•dmcrypt:現代linux核心支援的最常見的磁碟加密方案。

•ciphershed:這是現已停止開發的truecrypt磁碟加密軟體的開源分支版本。

ecryptfs的基礎知識簡介

ecryptfs是一種堆疊加密檔案系統,自2.6.19以來,它就得到linux核心的支援(作為ecryptfs模組)。用ecryptfs加密的偽檔案系統掛載到你現有的檔案系統上。它在ext檔案系統系列及其他檔案系統(比如jfs、xfs、reiserfs和btrfs,甚至nfs/cifs共享區)上執行起來非常順暢。

1 安裝ecryptfs

安裝到debian、ubuntu或衍生版本上:

$ sudo apt-get install ecryptfs-utils
注意:如果你決定在ubuntu安裝過程中加密你的主目錄,就要確保ecryptfs應該已經安裝。

安裝到centos、rhel或fedora上:

# yum install ecryptfs-utils
安裝到arch linux上:

$ sudo pacman -s ecryptfs-utils
為了穩妥起見,安裝程式包後,裝入ecryptfs核心模組是個好的做法:

$ sudo modprobe ecryptfs
配置ecryptfs

現在不妨執行ecryptfs配置工具,開始加密某個目錄:

2 建立登入密碼和掛載密碼

ecryptfs-setup-private

如下圖所示:

3 掛載私人檔案

a) 建立資料夾mkdir /root/tprivate

b) 修改資料夾許可權,使其他人無法訪問這個資料夾   chmod 700/root/tprivate

c) 用ecrypt掛載資料夾(加密)                           mount -t ecryptfs/root/tprivate/root/tprivate

d) 在掛載過程中會遇到詢問提示

首先需要輸入掛載密碼(不同於登入密碼)

然後需要選擇金鑰計算方式(直接回車為預設)

接著需要輸入加密長度(直接回車為預設)

接著需要選擇是否允許將未加密檔案放入此資料夾中(預設為不允許)

此時提示掛載成功

4)測試

a)建立檔案,並輸入內容,例如:gedit /root/private/test   輸入內容「this is a test file content」。

b)檢視檔案,輸入 cat /root/private/test  會看到  this is a test file content 字樣

c)解除安裝檔案,輸入"umount /root/private"

d)再次檢視檔案內容,輸入cat /root/private/test,會看到亂碼。

(5)快速掛載

以後每次開機後訪問加密資料前都需要重新掛載,你可以使用sudo mount -t ecryptfs ~/company_secret ~/company命令來掛載,但每次都要手工輸入一堆選項也挺煩人的。為了以後方便掛載,在~/.bashrc中加入別名:

alias mount_company="sudo mount -t ecryptfs $home/company_secret $home/company -o ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_enable_filename_crypto=y,ecryptfs_passthrough=n,ecryptfs_fnek_sig=cbd6dc63028e5602(需從前面記錄)"

以後每次使用前只需要執行mount_company即可:

zhouzm@zhouzm:~$ mount_company

[sudo] password for zhouzm:

(管理員密碼)

passphrase:

(加密密碼)

attempting to mount with the following options:

ecryptfs_unlink_sigs

ecryptfs_fnek_sig=cbd6dc63028e5602

ecryptfs_key_bytes=16

ecryptfs_cipher=aes

ecryptfs_sig=cbd6dc63028e5602

mounted ecryptfs

zhouzm@zhouzm:~$ cat company/test

123456

(6) 重灌系統或移動資料

你只需要記住加密密碼和ecryptfs_fnek_sig引數,則即使你要重灌系統或移動資料,也可以用同樣的命令對資料進行解密並掛載。

linux 上安裝使用git

一.安裝 專案主頁 最先安裝 ssh root下執行 ssh keygen t dsa 生成 pub key root ssh id dsa.pub 二 git使用說明 1 新增git配置資訊 git config global user.name test git config global us...

Linux上ClearSilver的使用入門

1.安裝 cd usr local src tar xzvf clearsilver 0.10.4.tar.gz cd clearsilver 0.10.4 configure disable apache enable gettext make install 注 disable apache為不...

linux上 at 命令的使用

有幾個人物,需要在特定的時間執行,且只執行一次,本來想用crontab執行,無奈,crontab不能具體到某年,後來一查,知道,如果在特定的時間點去執行任務,應該用at命令,crontab命令用在某個時間段內按照規則,迴圈執行,例如每年什麼時候 每月 每週等。at命令的使用方法 at 14 59 1...