防止Linux目录误删除需构建三层防护:文件系统级锁定(chattr +i/+a)、权限收窄(chown/chmod)及操作审计(别名、sudo限制、auditctl监控),三者缺一不可。
防止Linux目录误删除,不能只靠“小心点”,得用真正生效的防护层。最核心的是文件系统级锁定,配合权限收窄和操作约束,三者缺一不可。
这是唯一能让 root 也删不掉目录的手段。加了 i(immutable)属性后,目录本身无法被删除、重命名、移动,里面所有文件也不能新增、修改或删除——内核直接拒绝,不看权限也不认 sudo。
适合持续写入但绝不能删改的场景,比如应用日志目录。+a(append-only)允许用 >> 追加内容,但禁止删除、重命名、截断或覆盖任何文件,目录本身也无法被删。
echo "INFO" >> /var/log/myapp/current.log
rm current.log、mv current.log old.log、truncate -s 0 current.log
虽然不能防 root,但能大幅降低脚本、部署工具或普通用户误操作的风险。
sudo chown deploy:deploy /var/www/app
sudo chmod 750 /var/www/app,彻底屏蔽非授权组和其他用户技术防护之外,行为约束同样关键。让高危动作留痕、有确认、可追溯。
alias rm='rm -I'(大写 i,删前三次确认)Defaults timestamp_timeout=0 加到 /etc/sudoerssudo auditctl -w /etc/ -p wa -k etc_changes
[ -d "$log_dir" ] && rm -rf "$log_dir"/*