linux隐藏文件常含敏感信息,需重点审计~/.bash_history、~/.ssh/等路径;用find+stat筛查高风险权限;清理应清空历史、加固ssh私钥、关闭git明文凭据;通过/etc/skel预置安全配置并启用auditd监控。

Linux系统中隐藏文件(以点号.开头)常被忽略,却可能包含配置凭证、历史命令、临时缓存甚至明文密钥。权限审计与敏感数据清理不是“有无”的问题,而是“是否可控”的问题。
识别关键隐藏文件与目录
以下路径需优先检查,因其高频承载敏感信息:
-
~/.bash_history、~/.zsh_history:记录用户执行过的命令,可能含密码、API密钥、数据库连接串 -
~/.ssh/:私钥(id_rsa等)、已知主机(known_hosts)、配置(config)——私钥权限必须为600,目录为700 -
~/.gitconfig、~/.subversion/auth/:可能存明文账号或token -
/etc/.pwd.bak、/root/.mysql_history等非标准路径:运维误留的备份或调试残留
自动化权限审计脚本示例
用一条命令快速筛查高风险权限配置:
find /home -maxdepth 3 -type f -name ".*" -o -type d -name ".*" 2>/dev/null | \
while read f; do stat -c "%n %U:%G %a" "$f" | grep -E "(777|755.*\.ssh|644.*id_|.history$)"; done | \
awk '{if($3>=755 && $1~/\.ssh\//) print "SSH目录权限过高:", $1; else if($3==644 && $1~/id_/) print "私钥可读:", $1; else if($1~/\.history$/) print "历史文件未保护:", $1}'
说明:该命令聚焦三类典型风险——SSH目录开放写入、私钥文件权限宽松(644)、交互式历史文件未设访问限制。结果需人工复核,不可直接批量修复。
安全清理策略而非简单删除
清理目标是消除泄露面,同时保障系统可用性:
-
历史文件:清空
.bash_history后执行history -c,并设置HISTFILE=/dev/null或HISTCONTROL=ignorespace控制后续记录 -
SSH私钥:禁用
chmod 600 ~/.ssh/id_rsa后,用ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519生成新密钥替代旧密钥,旧密钥彻底shred -u擦除 -
Git凭据:运行
git config --global --unset credential.helper关闭明文存储,并改用git-credential-libsecret或pass后端 -
临时残留:对
/tmp和/var/tmp中带.env、.yml、.bak的隐藏文件,先file判断类型,再确认内容后决定是否rm -f
建立常态化防护机制
单次清理不能替代流程管控:
- 在
/etc/skel/中预置安全的.bashrc,默认关闭HISTSIZE、禁用set -o vi(避免意外触发历史展开) - 使用
auditd监控关键隐藏路径:-w /root/.ssh/ -p wa -k ssh_config,配合aureport -k ssh_config定期审查 - 将
find ~ -name ".*" -type f -perm /o+r -ls加入每日巡检脚本,输出至日志并告警











