紧急恢复家目录权限误设为777的正确方法是:若提前用getfacl -r /home/username > /backup/username.acl备份过,则执行setfacl --restore=username.acl即可完整还原原始权限(含acl);未备份则需手动重设——家目录755或700、.ssh目录700、authorized_keys 600,并确保属主正确。

家目录权限被误设为777后怎么紧急恢复
直接用 setfacl --restore 恢复,前提是提前用 getfacl -R 备份过。没备份就只能靠经验重设或从其他同环境用户复制权限。
-
getfacl -R /home/username > /backup/username.acl必须在修改前执行,且不能在目标家目录内运行(避免路径污染) - 误执行
chmod -R 777 /home/username后,setfacl --restore=username.acl可完整还原原始权限(包括 ACL 条目,比单纯 chmod 更准) - 若无备份,可参考系统默认:家目录通常为
700,.ssh目录为700,authorized_keys为600,.bashrc等配置文件一般为644
递归设置家目录权限时为什么不能只用 chmod -R 755
因为 chmod -R 755 会把所有文件(包括私钥、配置文件)也设成可执行,违反最小权限原则,且破坏 SSH 登录等关键功能。
- 目录需要
x才能进入,但普通文件不需要x——chmod -R无法区分类型 - 正确做法是分两步:
find /home/username -type d -exec chmod 755 {} \;设目录,find /home/username -type f -exec chmod 644 {} \;设文件 - 更安全的替代:用
chmod -R a-x,u+rwX,g+rX,o+rX /home/username,其中大写X只对已有x权限的项或目录生效
chown -R 后家目录仍无法登录的常见原因
不是属主没改对,而是 .bashrc、.profile 或 .ssh 下文件权限太宽松,SSH 守护进程直接拒绝加载。
- 检查
sshd日志:tail -f /var/log/secure,典型报错:Authentication refused: bad ownership or modes for directory /home/user/.ssh -
.ssh目录必须是700,authorized_keys必须是600,且属主必须为该用户(不能是 root) -
chown -R user:user /home/user后,务必补一句:chmod 700 /home/user/.ssh && chmod 600 /home/user/.ssh/authorized_keys
如何让新创建用户自动获得安全家目录权限
改 /etc/adduser.conf 或 /etc/login.defs,而不是每次手动修,否则新建用户仍继承不安全默认值。
- Debian/Ubuntu 系统:编辑
/etc/adduser.conf,确保DIR_MODE=0755(目录)和FILE_MODE=0644(文件);但更推荐设为DIR_MODE=0700和FILE_MODE=0600提升安全性 - RHEL/CentOS 系统:修改
/etc/login.defs中的UMASK行,设为UMASK 077,这样新用户家目录默认就是700 - 验证方式:
useradd -m testuser && ls -ld /home/testuser,确认输出权限为drwx------
getfacl -R」,而不是事后猜原始值。











