Linux文件加密

在 Linux 上让 “打开文件需要输入密码”,核心是对文件 / 目录做加密,只有输入正确密码才能解密查看。下面按 “单文件”“目录 / 批量文件”“磁盘 / 容器” 三种场景,来演示下如何加密

一、单文件加密

适合单个文档、脚本、配置等,打开 / 编辑必须输密码

1、Vim 内置加密(最简单,仅文本)

用 Vim 直接给文件加密码,仅用 Vim 打开时提示密码,其他工具打开是乱码

vim -x secret.txt #新文件或者已有文件都用此方式加密,会提示输入两次密码

加密后只有通过vim 打开文件输入密码后才能查看,通过cat打开也是乱码,如图:

  • 打开时:vim secret.txt → 提示输入密码,正确才显示明文
  • 取消加密:正确打开后,:X → 密码留空,保存即可
  • 缺点:算法较弱,不适合极高安全需求;仅文本文件

2、GPG 加密(通用、安全,推荐)

几乎所有发行版自带,支持任何文件类型,加密后生成 .gpg 文件,解密需密码

  • 优点:安全、跨平台、支持大文件;任何文件都能用
  • 缺点:需手动解密,不能 “双击直接打开
# 安装(如未预装)
sudo apt install gnupg  # Debian/Ubuntu
sudo dnf install gnupg  # RHEL/CentOS/Fedora

# 加密文件(对称加密,用密码)
gpg -c myfile.pdf  # 会提示输入两次密码,生成 myfile.pdf.gpg

# 解密/打开(自动提示输密码)
gpg -d myfile.pdf.gpg > myfile.pdf  # 输出到新文件
# 或直接解密覆盖原文件(谨慎)
gpg myfile.pdf.gpg

注:GPG 代理会缓存密码一段时间(默认 10 分钟到 2 小时),因此如果刚加密再解密不会提示输入密码,可执行命令清除缓存,然后在解密就提示输入密码了,如下:

gpgconf --kill gpg-agent
gpg-connect-agent reloadagent /bye

    3、OpenSSL 加密(轻量、命令行友好)

    用 AES-256 等强算法加密,适合脚本自动化

    # 加密
    openssl enc -aes-256-cbc -salt -in secret.txt -out secret.txt.enc
    # 解密
    openssl enc -d -aes-256-cbc -in secret.txt.enc -out secret.txt

    标签