家目录权限误改后可直接修复:先用chown -R用户:用户/home/用户名恢复所有权,再用find分别对目录设700、文件设600或644;若家目录被删,则从/etc/skel复制后同样chown和chmod。

家目录权限被误改后,直接 chown + chmod 就能修好
只要没删掉整个 /home/用户名 目录,只是改了权限(比如 chmod -R 777 /home/natasha),就不需要重装系统或找备份。核心就两步:改所有权、按类型设权限。
-
chown -R natasha:natasha /home/natasha—— 先把所有者和组全归还给用户,否则chmod没意义 -
find /home/natasha -type d -exec chmod 700 {} \;—— 目录必须是700,否则 ssh 拒绝登录(~/.ssh尤其关键) -
find /home/natasha -type f -exec chmod 600 {} \;—— 普通文件设600;若要兼容脚本或配置文件(如.bashrc),可放宽到644,但.ssh/id_rsa必须保持600
误删整个家目录?用 /etc/skel 复制再修权限
删了 /home/natasha 目录本身,/etc/skel 就是唯一可靠来源——它就是创建新用户时自动复制的模板,不是随便凑的。
-
cp -a /etc/skel/ /home/natasha——-a保留属性(包括隐藏文件、时间戳、权限位),别用-r -
chown -R natasha:natasha /home/natasha—— 复制后所有者是 root,必须改回来 -
chmod 700 /home/natasha—— 家目录本身必须是700,不能漏这一步 - 检查
~/.ssh:如果/etc/skel里没这个目录,得手动建:mkdir -m 700 /home/natasha/.ssh,否则 ssh 登录失败
批量修复时,find 的 -type 判断比 chmod -R 安全得多
chmod -R 755 /home/natasha 看似省事,但会把 .bash_history、.ssh/config 这类不该执行的文件也变成可执行,触发安全警告甚至拒绝登录。
- 目录用
find /home/natasha -type d -exec chmod 700 {} \;(家目录下绝大多数目录都应是700) - 普通文件用
find /home/natasha -type f -perm /111 -exec chmod 755 {} \;—— 只改原本就有执行位的文件(如 shell 脚本),避免误开权限 - 配置类文件统一处理:
find /home/natasha -type f \( -name "*.sh" -o -name ".*rc" -o -name ".*profile" \) -exec chmod 644 {} \;
没有备份,又改崩了系统级目录?别碰 chmod -R 777 / 后的急救逻辑
如果你刚对 / 或 /etc 执行了 chmod -R 777,现在连 ls 都报错,说明权限已破坏核心命令(/bin/ls 权限应为 755,属主 root)。此时不能靠 /etc/skel,得换思路:
- 优先尝试
rpm --setperms -a(RHEL/CentOS)或debsums -c | xargs chmod(Debian/Ubuntu)—— 包管理器知道每个文件该有的权限 - 若包数据库也损坏,唯一稳妥路径是:从同版本干净机器运行
getfacl -R / > system-perm.bak,再用setfacl --restore=system-perm.bak恢复(注意:getfacl和setfacl必须提前装好acl包) - 恢复后立刻检查
/etc/shadow(权限必须是000)、/etc/sudoers(必须440)、/root/.ssh(必须700)—— 这些地方错一个,系统就半瘫
/home 本身的权限。它必须是 755,否则非 root 用户无法进入自己的家目录——哪怕 /home/natasha 权限完全正确也没用。


















