不能对整个系统递归改权限,因/bin等需执行权限、/etc/shadow必须600、/home目录需防遍历,且chmod -R会破坏SELinux/ACL、误改设备文件;应分路径精准修复或用包管理器还原。

不建议在救援模式下用 chmod -R 重置“整个系统”的默认文件权限——这不是安全操作,而是高危行为,极可能导致系统无法启动或服务崩溃。
为什么不能对整个系统递归改权限
Linux 系统中不同路径的文件/目录有严格且差异化的权限要求:
-
/bin、/sbin、/usr/bin 等二进制文件必须有
x(执行)权限,但多数不应对others开放写权限;盲目设成755或777可能引入提权风险 -
/etc/shadow、/etc/shadow- 必须是
600,设成644就等于泄露 root 密码哈希 -
/root、/home/* 目录需限制其他用户访问,
chmod -R 755 /home会让所有用户能遍历他人家目录 -
SELinux 或 ACL 标记的文件(如末位带
.或+)用chmod -R不会清除这些扩展控制,但可能破坏原有策略逻辑 - 符号链接、设备文件(
/dev/*)、proc/sysfs 等虚拟文件系统节点,chmod -R会报错或无意义,还可能干扰后续挂载
真正可行的安全修复思路
目标不是“统一重置”,而是“按角色精准恢复”。推荐分三步走:
-
只处理已挂载的根分区(如 /mnt/sysroot):先
mount /dev/sda2 /mnt/sysroot,确保不操作正在运行的系统 -
优先修复关键敏感路径:
chmod 600 /mnt/sysroot/etc/shadow*chmod 644 /mnt/sysroot/etc/passwd /mnt/sysroot/etc/groupchmod 700 /mnt/sysroot/root-
chmod 644 /mnt/sysroot/etc/ssh/sshd_config(避免配置被篡改)
-
对普通用户家目录批量收紧(若确认属主正确):
chown -R user:user /mnt/sysroot/home/userchmod 700 /mnt/sysroot/home/userfind /mnt/sysroot/home/user -type f -exec chmod 600 {} \;find /mnt/sysroot/home/user -type d -exec chmod 700 {} \;
替代方案:用包管理器还原权限
对 RPM 或 DEB 系统,比手动 chmod -R 更可靠:
-
RHEL/CentOS/Fedora:
rpm --setperms -a(重置所有已安装包的文件权限) -
Debian/Ubuntu:
dpkg-statoverride --list | awk '{print $1,$2,$3}' | while read p u g; do dpkg-statoverride --update --add $u $g $p; done,再配合apt install --reinstall $(dpkg -l | awk '/^ii/ {print $2}') 2>/dev/null(慎用,仅限小范围) - 注意:这两条命令需在 chroot 环境中运行,且依赖数据库完整。执行前先备份
/var/lib/dpkg或/var/lib/rpm
最后提醒
没有“一键安全重置全系统权限”的通用命令。真实运维中,权限异常往往意味着已有入侵或误操作,应先做日志审计(journalctl -b、lastlog、ausearch)、检查可疑进程和定时任务,再针对性修复。盲目 chmod -R 是掩盖问题,不是解决问题。


















