1. 程式人生 > >linux上使用eCryptFS加密資料夾的方法

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

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

加密的型別

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

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

可用的加密工具

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

檔案系統級加密

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

相關連結:http://www.arg0.net/encfs

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

相關連結:http://ecryptfs.org

全磁碟加密

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

相關連結:http://sourceforge.net/projects/loop-aes/

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

相關連結:https://code.google.com/p/cryptsetup/wiki/DMCrypt

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

相關連結:https://ciphershed.org

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即可:
[email protected]:~$ 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
[email protected]:~$ cat company/test
123456

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

相關推薦

linux使用eCryptFS加密資料方法

從前有一個攝影師,他不懂加密重要檔案,也不懂修電腦,結果你懂的。以下就介紹下linux的加密方法及eCryptFS; 加密的型別 我們基本上有兩種不同的方法可以對檔案和目錄進行加密。一種方法是,檔案系統級加密,只有某些檔案或目錄(比如/home/alice)選擇性地加

linux檢視檔案和資料大小方法

檢視磁碟的佔用情況: $ sudo df -h udev 3.8G 0 3.8G 0% /dev tmpfs 771M 9.4M 762M 2% /run /dev/sda9 57G 5.1G 49

Win10此電腦6個資料去除方法

把下面程式碼複製,寫入到 clear.reg中,然後執行即可 Windows Registry Editor Version 5.00 ;如需還原去除上語句前減號即可 ;取消我的電腦"視訊"資料夾 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\C

滴滴雲使用 eCryptfs 加密資料

1. eCryptfs 簡介 eCryptfs 是在 Linux kernel 實現的一個加密檔案系統,在 Linux kernel 2.6.19 版本收納入官方 Linux kernel。它採用堆疊式的設計思想,邏輯上位於 VFS 和傳統檔案系統之間。使用者應用程式對傳統檔案系統的讀寫

linux 伺服器PHP程式資料讀寫許可權新增

sudo chmod 777 /var/www/html/專案/picture 修改某個目錄的許可權可以讓PHP讀寫 其中sudo chmod 777為命令的固定格式, /var/www/html/ 為需要讀寫許可權的絕對路徑。

Spring MVC 中檔案傳/刪除 刪除空資料方法 + 下載方法

package com.pqs.common.tools; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOExce

linux訪問windows共享資料方法

有時需要在linux下需要訪問windows的共享資料夾,可以使用mount掛載或者使用samba連線。 1、mount掛載 首先建立被掛載的目錄: $ mkdir windows 將共享資料夾掛載到windows資料夾: $ sudo mount -

Github下載指定資料方法

一般地,在Github上下載專案檔案只需要複製專案網址通過命令“git clone 網址”即可完成下載。 有的時候,我們並不需要整個專案檔案,而是隻需要下載其中的某個檔案或資料夾,可以利用SVN。SVN是基於檔案方式儲存的,Git是基於元資料方式分散式儲存檔案資訊的,它

Linux 中檔案和資料獲取 MySQL 許可權(SELinux)

  今天在 Linux 系統上移動 MySQL 的資料庫目錄 配置如下: /etc/my.cnf [mysqld]datadir=/home/mysqlsocket=/var/lib/mysql/mysql.sock 更改完配置檔案重啟MYSQL的時候出現

Git傳空資料

git上傳的資料夾為空的時候 1,先刪除空的資料夾 參考:https://www.cnblogs.com/wang715100018066/p/9694532.html 2,這個只能說是技巧不能說是方法,原理是在每個空資料夾新建一個.gitignore檔案,然後提交。 $ find . -type d

用不同的使用者名稱和密碼登入網路的共享資料

2014-05-20 22:49 by MikeZhou, 10697 閱讀, 0 評論, 收藏, 編輯 https://www.cnblogs.com/jinjiangongzuoshi/p/3740218.html 網路共享時,

Linux下遍歷資料

#include <dirent.h> #include <stdio.h> #include <stdlib.h> #include <string.h> char *dirname="/path/"; DIR *dirfile; dirfiles

Linux檔案許可權與資料許可權實踐

檔案許可權在基礎中有介紹,不在重複 一、資料夾許可權:   示例:      解釋說明:   r --read  既ls   w --write     既建立新的目錄或者檔案   x --execute 既cd 現在有4個使用者分屬3個不同的使用者組,如下:

Linux中檢視各資料大小命令du -h --max-depth=1

du [-abcDhHklmsSx] [-L <符號連線>][-X <檔案>][--block-size][--exclude=<目錄或檔案>] [--max-depth=<目錄層數>][--help][--

純淨版linux (debian)掛載VirtualBox共享資料 virtual box虛擬機器在linux下設定共享資料

使用的虛擬機器版本是:VirtualBox-5.2.8-121009 使用的linux版本是:Linux debian 4.9.0-7-amd64 tty 1. 開始配置 1.1:開啟虛擬機器設定,開啟你的VirtualBox軟體(主要先不要開啟linux系統)。選中你的虛擬機器後,

linux重命名系統資料libexec後無法使用

問題描述: 能登陸ssh,但xftp無法使用,把/usr目錄下的libexec重新命名成了l,常用命令都不能用但能用cd   解決方法: 由於各種命令都用不了,只能另尋它法,考慮用光碟啟動,掛載後將資料夾名改回來 為了便於維護,直接用gparted Gpart

Linux下建立共享資料

1.  是否安裝了samba服務  sudo apt-get install samba  sudo apt-get install smbfs 2.  建立需要共享的目錄/ home/usr/share 在目錄/home/xxxx/shar

Linux命令之建立資料3

1)mkdir  fyr即可在當前目錄下建立一個資料夾 2)在fyr資料夾下建立一個子目錄 mkdir fyr/fyr1 注意:如果不存在父層目錄直接建立對應父層目錄下的子目錄mkdir  FYR/fyr2 ;如圖所示會提示失敗; 解決同時建立父層面和對應子目錄的,加引數mkdi

linux迴圈遍歷資料下所有檔案

demofun(){ for file in `ls $1` do if test -f $file then echo "file: $file" elif test -d $file then

如何刪除Git的遠端資料

方法一 這裡以刪除 test資料夾為案例 git rm -r --cached test //--cached不會把本地的test刪除 git commit -m 'delete test dir' git push -u origin master 方法二 如果誤提交