eCryptfs - read/write系统调用

eCryptfs,文件系统级加密,在登出时自动为文件加密。通过挂载文件解密和卸载文件加密的方式保护文件 一、文件目录加密与磁盘加密 1.文件目录加密 我们主要有两种加密文件和目录的方法。一种是文件系统级别的加密,在这种加密中,你可以选择性地加密某些文件或者目录(如,/home/alice)。然而,文件系统级别的加密也有一些缺点。例如,许多现代应用程序会缓存(部分)文件你硬盘中未加密的部分中,比如交换分区、/tmp和/var文件夹,而这会导致隐私泄漏。 加密方式: EncFS:尝试加密的最简单... 阅读详情

eCryptfs - read/write系统调用

README

  • 作者:邢万里
  • 学校:重庆邮电大学
  • email:wlxing@yahoo.com

入口(系统调用include/linux/syscall.h)

由于安全上的一些问题,2.6和3.x系类的系统调用改动幅度有些偏大。系统调用均经过如下代码进行“过滤”:

#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)

这里的read/write系统调用对应的是SYSCALL_DEFINE3,而SYSCALL_DEFINEx实现如下:

#define __SYSCALL_DEFINEx(x, name, ...)                 \
    asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__));       \
    static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__));   \
    asmlinkage long SyS##name(__SC_LONG##x(__VA_ARGS__))        \
    {                               \
        __SC_TEST##x(__VA_ARGS__);              \
        return (long) SYSC##name(__SC_CAST##x(__VA_ARGS__));    \
    }                               \
    SYSCALL_ALIAS(sys##name, SyS##name);                \
    static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__))

VFS层(系统调用fs/read_write.c)

如下是read/write系统调用对应的具体函数,我这里略去了异常处理和一些其他细节代码,剩余的代码是核心部分。可以很清楚的看到两个系统调用都是用vfs_[read/write]机制。

SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
{
    ret = vfs_read(file, buf, count, &pos);
}

SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf,
        size_t, count)
{
    ret = vfs_write(file, buf, count, &pos);
}

eCryptfs层(fs/ecryptfs/main.c)

如下部分的数据结构即为前文说到的VFS机制到具体的文件系统。由.read到generic_read_dir,即由VFS到eCryptfs。

const struct file_operations ecryptfs_dir_fops = {
    .read = generic_read_dir,
};

const struct file_operations ecryptfs_main_fops = {
    .read = do_sync_read,
    .write = do_sync_write,
};

此时只需查询eCryptfs中对应的函数是如何完成具体的操作了。

Android eCryptfs移植实战:内核加密文件系统在移动设备的数据保护应用 文件系统加密是数据安全领域的核心技术,通过在存储层面对文件内容进行透明加密,确保数据在静态存储时的机密性。其原理通常采用分层密钥体系,使用对称加密算法(如AES)加密文件内容,并通过密钥派生函数保护主密钥。这项技术的核心价值在于为敏感数据提供存储级保护,广泛应用于金融、医疗、企业文档管理等对数据保密性要求极高的场景。在移动生态中,Android系统虽然提供了全盘加密和基于文件的加密方案,但对于需要应用层细粒度控制的场景,移植Linux成熟的eCryptfs堆叠式加密文件系统成为了一种可行的技术选择。eCry 阅读详情

相关推荐

VSCode SSH连接报‘permissions are too open’?别慌,Windows/Linux双系统权限修复指南

本文详细解析了VSCode SSH连接时出现的‘permissions are too open’错误,提供了Windows和Linux双系统下的完整修复方案。从权限问题的本质出发,介绍了Linux的chmod命令和Windows的icacls工具的具体使用方法,帮助开发者快速解决跨平台SSH连接问题,确保远程开发工作流畅进行。

weixin_30808693的博客 758

Linux加密文件系统eCryptfs介绍

eCryptfs 是在 Linux 内核 2.6.19 版本中,由IBM公司的Halcrow,Thompson等人引入的一个功能强大的企业级加密文件系统,它支持文件名和文件内容的加密。一、...

内核工匠 7332

绿盾加密文件解密后,如何安全地进行数据备份与迁移?

本文详细介绍了绿盾加密文件解密后的全流程数据安全管理方案,包括权限重塑、存储加密、自动化备份和安全迁移等关键步骤。通过最小权限原则、分层加密策略和分段迁移技术,确保敏感数据在明文状态下仍能得到有效保护,适用于企业级数据安全需求。

weixin_30383279的博客 512

ecryptfs透明加密

首先作者为了实现透明加密,构造了一个ecryptfs的文件系统。这个文件系统并没有对磁盘文件的直接组织,而是依附在已有的文件系统上,通过构建的文件系统对已有的文件系统做了重新组织实现。之后是磁盘管理和虚拟文件系统管理。这些都是依附与一个叫lowe_path的核心逻辑,就是未加密文件夹。通过对未加密文件夹重新组织,实现对未加密文件页缓存加密。透明加密一直是安全领域比较热门的领域,不过我了解了下内核自带的ecryptfs。正如常见的文件系统构成一样,ecrypt构建了自己的文件系统节点管理逻辑。

inquisiter 1655

2025年Linux图像查看器选型指南:Wayland原生、色彩管理与批量处理

图像查看器在Linux中已从基础显示工具演进为集色彩管理、硬件加速、元数据处理与自动化集成于一体的生产力核心组件。其底层依赖图形协议(如Wayland/X11)、编解码生态(libheif/dav1d)、色彩系统(colord/ICC v4)及脚本接口(DBus/CLI)等关键技术栈。选择不当将直接导致色域错位、大图崩溃、批量失效或安全响应滞后。本文聚焦2025年主流发行版(Ubuntu 24.10/Fedora 40/Debian 13)下的真实工程场景,基于Wayland原生支持、依赖树深度≤3、可编程

weixin_34357887的博客 423

基于TDE透明加密思想,构建AI私有模型安全存储与加载方案

在数据安全领域,透明数据加密(TDE)是一种成熟的技术,其核心原理是在存储引擎的I/O层对数据进行自动加解密,对上层应用完全透明,从而在保障数据静态存储安全的同时,不影响业务性能。这一技术价值在于解决了数据资产在存储环节的泄露风险,广泛应用于数据库、文件系统等场景。随着AI模型成为企业的核心数字资产,其保护需求日益迫切。模型文件在磁盘上以静态形式存储,价值高且易被复制,传统的文件加密方式在加载时需整体解密,会带来严重的性能损耗。因此,将TDE的“分层密钥管理”和“透明加解密”思想迁移至AI模型保护,成为一种

weixin_30411239的博客 890

eCryptfs软件简介

eCryptfs(Enterprise Cryptographic Filesystem)是一个Linux系统下的企业级加密文件系统,它兼容POSIX,工作在用户空间,通过FUSE(Filesystem in Userspace)实现。eCryptfs提供了对文件和目录的透明加密和解密操作,支持文件名和文件内容的加密。

地球空间 788

EncFS加密文件系统:Linux用户数据安全与云存储加密实战指南

文件系统加密是数据安全领域的基础技术,通过在操作系统层面实现透明加解密,确保数据在存储和传输过程中的机密性。其核心原理是利用密码学算法对文件内容进行实时加密,同时通过密钥管理机制控制访问权限。这项技术的价值在于为敏感数据提供了一道动态防护屏障,尤其适用于需要灵活加密特定目录而非整个磁盘的场景。在应用层面,文件系统加密广泛用于保护个人隐私文件、开发环境配置以及云端同步数据的安全。本文聚焦于EncFS这一基于FUSE的用户态加密方案,它通过按需加密和动态解密的机制,实现了无需预分配空间的目录级加密,并支持与Dr

weixin_30832143的博客 356

eCryptfs - Bonus

eCryptfs 综合篇READMEeCryptfs模块入口(ecryptfs_init()函数)eCryptfs模块出口(ecryptfs_exit()函数)挂载eCryptfs(ecryptfs_mount()函数)关联知识 BDI: (1)定义: bdi,即是backing device info的缩写,根据英文单词全称可知其通指备用存储设备相关描述信息,这在内核代码里用一个结构体back

邢万里 1003

Ubuntu交换文件(swap file)创建与调优完全指南

Linux虚拟内存机制是操作系统内存管理的核心基础,其通过swap技术实现物理内存的弹性扩展与异常兜底。swap file作为现代Ubuntu默认推荐的交换空间实现方式,相比传统分区具备动态创建、SSD友好、WSL兼容等工程优势。其原理在于内核将非活跃匿名页换出至磁盘文件,缓解OOM风险并支撑休眠功能。技术价值体现在系统稳定性提升(避免硬重启)、资源调度优化(提升page cache效率)及环境适配性增强(云/容器/开发板通用)。典型应用场景包括Docker多服务编排、Rust/Go项目编译、Chrome+

weixin_30412167的博客 602

Linux内核安全技术——磁盘加密技术概述和eCryptfs详解

数据生命周期管理(Data Lifecycle Management)通常将数据划分为生产、存储、使用、分享、销毁、归档几个阶段。而从信息安全保护维度,则一般将数据划分为三种状态,即:Data in Use、Data in Motion/Transit、Data at Rest。Data in Motion/Transit,即数据传输场景,是大家最熟悉、技术发展最成熟的安全场景。例如基于SSL/TLS协议的Https应用,基于SSH协议的SCP/SFTP应用等。

新程序圆 617

Linux命令底层原理:cp、mv、cat、type、find的系统级认知重建

Linux命令不是孤立的操作符,而是操作系统内核与用户空间协同工作的接口契约。理解其本质需回归文件系统模型——以inode为标识、以文件描述符为通道、以系统调用为执行载体。cp涉及硬链接创建与原子覆盖的权衡,mv实为目录项重绑定而非数据搬运,cat本质是流式字节转发而非文本查看器,type揭示Shell命令解析的四层优先级机制,find则是基于元数据的声明式遍历引擎。这些能力在嵌入式开发(如AUTOSAR CP)、国产Linux发行版(OpenEuler/UOS)及高可靠场景中尤为关键,直接影响固件升级、日

defkaug153461的博客 413

【信息科学与工程学】【产品体系】计算机科学与自动化——第一百八十九篇 操作系统内核(微内核/宏内核)函数与算法02

宏内核(Linux)更多典型内核函数/算法,从编号271开始,覆盖中断管理、热插拔、PCI、ACPI、固件、崩溃转储、kexec、休眠、watchdog、RTC、hwmon、LED、backlight、input子系统、remoteproc等更多领域。编号类型领域内核类型内核中的函数/算法/模块/模组模块的调用关系模块/函数/算法逐步推理思考的数学表达式及参数列表及参数数值设计模块的C/C++/其他代码关联知识271中断管理中断描述符宏内核 / (中断子系统核心)驱动申请中断 → → → 分配irq_

weixin_49199313的博客 106

从程序无法运行到操作系统核心原理:期末复习实战指南

操作系统作为计算机系统的核心,负责管理硬件资源并提供用户与应用程序的运行环境。其核心原理包括进程管理、内存分配、文件系统和输入输出控制等。理解程序如何从静态文件转化为动态进程,涉及可执行文件格式(如PE、ELF)、指令集架构(ISA)以及操作系统的加载机制。这些知识不仅具有重要的理论价值,更是解决实际工程问题的关键,例如在程序跨平台部署、系统安装报错(如“基础软件仓库设置失败”)和性能优化等场景中。本文以“程序无法运行”这一常见问题为切入点,串联操作系统核心概念,帮助读者构建系统化的知识框架,提升解决实际问

weixin_33691817的博客 415

【C++】lambda表达式

本篇文章我们要学习的是lambda表达式,它是C++11新增的一种特别方便的语法,相较于之前的函数指针以及仿函数都方便了不少,下面就让我们一起来学习吧。

malloc不出对象的博客 2630

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

容器存储加密性能损耗分析:LUKS与nerdctl实战调优指南

数据加密是保障存储安全的核心技术,通过在块设备或文件系统层对数据进行编码,确保静态数据即使被非法访问也无法被解读。其原理主要基于密码学算法,如AES,通过密钥对数据进行转换。这项技术的价值在于满足合规性要求,保护敏感数据免遭泄露。在容器化部署和云原生环境中,存储加密尤为重要,常用于数据库、配置文件等持久化数据的保护。然而,加密过程会引入计算开销,可能影响I/O性能,尤其是在高并发随机读写场景下。本文聚焦于容器存储加密场景,深入剖析使用LUKS与nerdctl方案时性能损耗的具体来源,通过基准测试量化损耗程度

weixin_30430169的博客 398

云桌面如何部署?云桌面系统方案部署详细教程

云桌面作为一种比较新的技术工具,核心解决的场景是方便设计师的灵活办公,本身技术就是非常的灵活性,所以在安装部署方面青椒云也做到了十足的灵活。

2301_79113726的博客 1633

Ubuntu用户配额配置指南:用usrquota防止磁盘被偷光

用户配额(user quotas)是Linux内核原生支持的磁盘空间管控机制,通过在ext4/xfs文件系统上启用usrquota挂载选项,实现按UID粒度限制磁盘使用量。其原理是在write()系统调用前由内核实时校验软硬限制,零性能开销且完全透明。该技术具备强实用性与低门槛特性,适用于个人桌面防缓存爆炸、服务器防日志失控、Docker容器资源隔离等典型场景。相比grpquota和project quotas,usrquota兼容性最佳、配置最简,是Ubuntu等主流发行版开箱即用的黄金标准。

long_yu2的专栏 308

探索Vortex开源GPGPU:RISC-V SIMT架构(2),指令Decode

本文分析了Vortex RISC-V内核的Decode模块设计。文章详细介绍了指令译码过程,包括操作码、功能码和寄存器字段的提取,以及不同类型指令(R/I/S/B/U/UJ)的立即数处理。重点阐述了基于操作码和功能码的分层译码逻辑,包括ALU运算、分支跳转、系统调用等指令的译码规则。此外,还描述了定制指令的处理机制以及与调度器的握手协议。Decode模块通过组合逻辑实现快速译码,并将结果传递给下级Issue模块,同时协调指令流控制。

weixin_55313207的博客 1792

IMU标定中的Allen方差

Allen方差 Allen方差是IMU标定任务中的常用工具。IMU标定可以分为确定性误差和随机误差,确定性误差包括:scale、bias、misalignment。随机误差则主要是高斯白噪声和bias随机游走。Allen方差主要用于标定随机误差。 Allen方差获取 Allen方差的计算方法如下: 保持IMU静止, 采集N个数据点。 将N个点定长分组,常用的交叠式Allen方差如下(n=3): 对于每个子集,计算均值后,计算相邻两组的方差,得到的时间-方差曲线即为Allen方差。 Alle

realjc的博客 5733

TDengine时序数据库安全加固实战:IP白名单、审计日志与TLS加密配置指南

在时序数据库领域,数据安全是保障业务连续性的基石。其核心原理在于构建多层防御体系,从网络边界到数据存储实现纵深防护。这一技术价值在于确保海量时序数据在采集、传输、存储与查询全链路中的机密性、完整性与可用性。尤其在物联网、运维监控等实时数据处理场景中,安全配置直接关系到核心业务数据的可靠性。本文将聚焦TDengine这一高性能时序数据库,深入解析其关键安全机制的工程实践。通过精细配置IP白名单实现访问控制,可有效管理客户端与集群节点间的网络连接;开启并解析审计日志,能完整追溯所有数据库操作,满足合规与故障排查

309

新手学习Vivado XDMA (1) - 配置详细分析

PCIe 在 Vivado XDMA 中的配置分析。

qq_18553915的博客 9706

硬核 Linux“ 修炼 “之路

“多一句没有,少一句不行,用最短的时间,干最硬的事! "

难~赴 422

STM32入门教程:图像处理

然后,我们使用 STM32 的 DSP 模块中的 arm_mean_u8 函数计算原始图像的平均值,并将结果存储在 meanValue 变量中。然后,我们需要编写代码配置 STM32 的外部中断输入引脚,并在中断处理函数中读取 OV7670 摄像头模块输出的图像数据。然后,我们需要编写代码配置 STM32 的 USB OTG 接口,并在回调函数中读取 USB 摄像头输出的图像数据。一、图像采集 图像采集是图像处理的第一步,我们需要将外部图像源的数据导入到 STM32 中进行处理。

2401_85625565的博客 1616

PVE虚拟机运行不流畅,出现卡顿。

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 3061
上一篇: eCryptfs - close系统调用
下一篇: linux各种终端类型的区别和概念
邢万里
博客等级 码龄11年 35粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值