存储安全不是“给磁盘加密”这一件事。数据从创建、使用、备份、归档到删除,会经过账户、文件系统、内核、介质和日志系统;任一环节失守都可能造成泄露、篡改或不可恢复。

学完这部分内容后,你应能正确解释 UNIX 文件与目录权限、ACL 和特殊位;设计静态数据加密及密钥层级;区分哈希检测与访问控制;理解 HDD、SSD、快照和备份对删除的影响;执行系统加固;设计既可调查又能承受负载的审计轨迹。
纵深防御包含预防、检测和恢复:最小权限与加密降低暴露,完整性基线和审计发现异常,隔离备份保证恢复。任何单层都不是全部答案:磁盘已解锁时全盘加密挡不住已登录攻击者,哈希能发现变化却不能阻止写入,日志若与被入侵主机同权限存放也可能被删。
inode 保存所有者、组、权限位、时间和数据块位置;目录保存名称到 inode 的映射。传统权限按所有者、所属组、其他人三类,每类有 r、w、x。匹配到所有者时不会再叠加其他人权限。

普通文件中 r 是读内容,w 是改内容,x 是执行。目录中 r 是列名称,w 是创建、删除、重命名目录项,x 是穿越并按名查找。因此删除文件主要取决于父目录权限,不等于能修改文件内容。
SetUID/SetGID 可让程序临时取得文件所有者或组身份;目录 SetGID 让新对象继承目录组;共享目录粘滞位限制用户删除他人条目。扩展 ACL 增加命名用户与组,mask 是组类和命名条目的有效权限上限。
静态数据包括在线磁盘、数据库文件、快照、备份带、可移动介质和长期归档。透明加密可部署在应用、文件、卷、存储设备或备份库层。越靠上越能按对象隔离,越靠下越容易覆盖全部数据但粒度较粗。

常见信封加密为每个文件或对象生成数据密钥 DEK,再用主密钥 KEK 包裹 DEK。轮换 KEK 时无需重加密全部数据,只需重新包裹 DEK。主密钥应放在权限独立的密钥服务或硬件模块中,备份密钥也必须独立保护。
加密只解决“没有密钥时看不懂”。系统运行并已解锁时,进程仍可能读取明文,所以必须叠加账户隔离、最小权限和审计。密钥丢失会把可用性事故变成永久数据损失,恢复密钥既要可用,也要通过分权、审批和记录防止滥用。
哈希把文件内容映射为固定摘要。与可信基线比较可发现变化,但基线若与文件一起被改,检测就失去意义。高价值基线应签名或存放在独立只读位置,并记录文件元数据、所有者、权限和软件包版本。
只读挂载、不可变镜像和受控更新窗口能减少篡改面;需要写入的状态应移到单独卷。备份则服务于恢复:至少要隔离生产凭据、限制删除权限、定期做恢复演练。同步副本会同步勒索加密和误删,不能替代有版本、保留期和离线或不可变策略的备份。
真实实验中,追加一行即改变 SHA-256:
初始: mode=640 sha256=c6a8c98e585a8c59
修改: sha256=31d7450ba33152a3 完整性=失败普通删除通常移除目录项并释放块,不保证介质上的比特立即消失。打开的文件描述符仍引用 inode;快照、备份、缓存和副本也不会因主路径删除而自动消失。
本机实验先打开文件,再 unlink。路径消失,但已打开描述符仍能读:
unlink后: 路径存在=False, 已打开描述符仍可读='配置版本=1\ndebug=true'HDD 上按设备规范覆盖可能降低恢复概率;SSD 的磨损均衡、重映射和垃圾回收使文件级覆盖无法保证触及旧物理页。应优先使用设备支持的 sanitize/secure erase 并验证完成状态。若所有副本从创建时就由独立数据密钥加密,销毁该密钥可快速实现加密删除,但必须确认密钥副本、缓存和备份策略。高敏感介质退役最终可能要求物理破坏。
“多覆盖几次”不是跨介质通用保证。删除方案必须同时考虑介质类型、控制器行为、快照、备份、密钥副本和威胁模型。
加固从受保护环境中的初始安装开始:只装必要组件,及时应用补丁,保护启动链并限制外部介质;随后关闭不需要的服务、应用和协议,配置账户、组、权限、资源限制和安全默认值;再部署主机防火墙、恶意软件防护和入侵检测;最后用检查表与自动扫描验证实际状态。

服务账户应不可交互登录,管理员使用独立高权限账户并通过受审计提升执行任务。默认密码、示例账户和不必要监听端口应清理。补丁不是“一次完成”:新漏洞、软件变更和配置漂移要求定期复测,并把例外写明负责人、到期时间和补偿控制。
审计事件应至少包含谁、何时、哪台主机、哪个对象、什么动作、结果、会话或请求关联标识。既要记录异常,也要采集足够正常事件作为基线并还原攻击前后过程。采集越细,调查能力越强,但存储、性能和分析噪声也越大,因此应围绕威胁和合规目标选择事件与粒度。
日志代理应尽早把事件发送到权限独立的远程汇聚端,传输要认证和加密,集中存储要限制修改、设置保留期并监控采集断流。高权限管理员不能拥有无痕删除自己日志的能力;系统时钟需同步,避免跨主机关联失真。
哈希链让每条记录包含上一条摘要,可检测中间修改或删除,但不能阻止攻击者截断链尾,所以还需远程见证、定期签名或不可变存储。
实验中我们将文件设为 640,说明所有者读写、组只读、其他人无权;修改内容后摘要改变。两条结构化事件以前一摘要构造链:
日志链: 0000000000000000 -> 2993947a6ca77266 {"action": "read", "actor": "alice", "result": "allow"}
日志链: 2993947a6ca77266 -> 633fa8d7e273f390 {"action": "chmod", "actor": "bob", "result": "deny"}若第一条 actor、action 或 result 被改,第一条摘要不再匹配,第二条保存的前摘要也揭示断链。调查时还要保留原始时间、进程、用户 ID、路径与 inode,避免只凭可变用户名或文件名归因。实验全在临时目录执行并自动清理。
文件系统安全从 inode 权限、目录语义和 ACL 开始,扩展到静态加密、密钥管理、完整性基线、隔离备份、安全删除、系统加固和可验证审计。机密性、完整性与可用性必须一起设计。
部署前检查:默认权限和 umask 是否最小;共享目录是否需要 SetGID 与粘滞位;ACL mask 是否意外削权;所有副本是否加密且密钥独立;基线是否可信;备份能否真正恢复;删除是否覆盖快照、备份和介质特性;系统是否最小安装并持续补丁;日志是否结构化、同步时钟、远程汇聚且可验证。