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


