ecryptfs是一种加密文件系统。该文件系统的内容在传输和储存时以密文形式存在。只有在mount时用密钥解密才能得到明文。利用这个特性,我们可以用他来对软件镜像中的部分敏感文件系统进行加密,然后打包发布。


1.加密文件系统
1.1 生成密钥passphrase

sig=`echo none | ecryptfs-add-passphrase | grep -v Passphrase | cut -d[ -f  | cut -d] -f `
echo $sig > sig

1.2 准备空的加密文件系统 fs_crypt

mkdir fs_crypt

1.3 将上面创建的加密文件系统mount到加载点

mount -t ecryptfs -o ecryptfs_cipher=aes,ecryptfs_key_bytes=,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n,ecryptfs_sig=${sig},sig=${sig},verbosity= /fs_crypt/ /mnt/

1.4 将待加密的文件系统的内容复制到加载点

rsync -va /plain/ /mnt/

1.5 将加载点umount

umount /mnt/

1.6 fs_crypt就是生成的加密文件系统

对fs_crypt压缩打包,就可以以密文的形式传输和储存了,

2. 解密文件系统
2.1 将fs_crypt在目标设备上解压缩
2.2 用passphrase把fs_crypt mount到加载点。

sig=`cat sig`
mount -t ecryptfs -o ecryptfs_cipher=aes,ecryptfs_key_bytes=,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n,ecryptfs_sig=${sig},sig=${sig},verbosity= /fs_crypt/ /mnt/

2.3 访问加载点里面的文件即可访问到明文

所以这个过程中,密钥的保存是很重要的,需要通过其他加密方式进行分发。

参考: https://github.com/lxc/lxc/blob/master/hooks/mountecryptfsroot

ecryptfs的更多相关文章

  1. 左右GNU Linux企业加密文件系统 eCryptfs简介

    /*********************************************************************  * Author  : Samson  * Date   ...

  2. eCryptfs文件系统测试

    650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...

  3. Linux基础介绍【第九篇】

    服务器添加3块磁盘的体系结构 [root@oldboylinux test]# free -m              total used free shared buffers cached M ...

  4. Linux文件搜索命令

    文件搜索命令:locate locate 文件名 在后台数据库中按文件名搜索,搜索速度很快(比find命令要快得多) locate命令所搜索的后台数据库的位置:/var/bin/mlocate 支持模 ...

  5. proc文件系统

    在shell终端里不带任何参数,直接运行mount命令可以显示正在挂载的文件系统.其中有这么一行 none on /proc type proc (rw) 这就是/proc文件系统.第一个域显示non ...

  6. 原来今天是感恩节-Linux基础继续&MySQL和PHP

    hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...

  7. Linux磁盘及文件系统管理

    在LINUX中我们知道一个很重要的概念,那就是"一切皆文件",这里的一切表示所有在LINUX系统的对象,自然也包括了LINUX中的硬盘设备.在LINUX中所有设备都被抽象成一个文件 ...

  8. ZFS(一):ZFS在Debian GNU/Linux上的安装

    以下内容翻译自https://pthree.org/2012/04/17/install-zfs-on-debian-gnulinux/,并附有原文,由于是第一次翻译,如有任何翻译不恰当之处,欢迎指出 ...

  9. 诠释Linux中『一切都是文件』概念和相应的文件类型

    导读 在 Unix 和它衍生的比如 Linux 系统中,一切都可以看做文件.虽然它仅仅只是一个泛泛的概念,但这是事实.如果有不是文件的,那它一定是正运行的进程. 要理解这点,可以举个例子,您的根目录( ...

随机推荐

  1. 音视频入门-11-PNG文件格式详解

    * 音视频入门文章目录 * PNG 文件格式解析 PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDAT.IEND)组成. PNG 文件包括 8 字节 ...

  2. Spring Data - Spring Data JPA 提供的各种Repository接口

    Spring Data Jpa 最近博主越来越懒了,深知这样不行.还是决定努力奋斗,如此一来,就有了一下一波复习 演示代码都基于Spring Boot + Spring Data JPA 传送门: 博 ...

  3. django-URL转换器(四)

    接URL匹配那一节. 在book中的urls.py from django.urls import path from . import views urlpatterns = [ path('', ...

  4. fenby C语言 P32

    a[0] a[0][0] a[0][1] a[0][2] a[1] a[1][0] a[1][1] a[1][2]//一维数组 int a[2][3]//二维数组int (*p)[3]=a; #inc ...

  5. Oracle大规模数据快速导出文本文件

    哈喽,前几久,和大家分享过如何把文本数据快速导入数据库(点击即可打开),今天再和大家分享一个小技能,将Oracle数据库中的数据按照指定分割符.指定字段导出至文本文件.首先来张图,看看导出的数据是什么 ...

  6. node-批量上传文件

    很多项目可能都会涉及到的业务是关于多文件上传的,那么需要使用到redis或者第三方库(使用redis)来实现任务队列,甚至需要控制并发量和分包(一次请求传多个文件),这样每次都会以实现功能来完成,但是 ...

  7. Linux 下的 redis安装

    官网下载链接:https://redis.io/download redis安装流程,记录自己的实践,分享给需要的人. 1.选择Stable(5.0)下的Download 5.0.0 链接进行下载 ( ...

  8. CSS汇总之CSS选择器

    要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器. 一.通配符选择器 语法:*{ } 说明:通配符选择器可以选择页面上所有的html标签(包括body,h ...

  9. ie浏览器兼容性的入门解决方案

    IE浏览器的兼容性素来是令人头疼的问题,大名鼎鼎的FUCK-IE不是浪得虚名的. 这里使用的解决方案是HACK,具体原理就是针对不同的浏览器写不同的HTML.CSS样式,从而使各种浏览器达到一致的渲染 ...

  10. js基础总结01 --操作DOM

    1.选择对象 通过id来选择绑定一个dom节点 :document.getElementById('p1'): 通过类名来绑定一个类数组的对象集合,:document.getElementsByCla ...