家目录权限错误典型表现为登录失败或“home directory permissions are too open”;根本原因是ssh/pam强制要求家目录权限为700(仅属主可读写执行),组或其他人含w位即被拒绝,需用chown和chmod分步修复并验证。

用户家目录权限配置错误,最典型的症状是登录失败、shell 启动异常、SSH 拒绝连接,或系统提示“home directory permissions are too open”“Permission denied”等。根本原因不是“目录不能读”,而是 Linux 安全策略(尤其是 SSH 和 PAM)对家目录权限有严格限制——它要求家目录必须仅属主可写,且不能被组或其他人写入。
确认家目录当前权限与归属
先明确目标路径和预期值:
- 普通用户家目录(如
/home/username):应为drwx------(即700),属主为该用户,属组通常为其主组 - root 用户家目录(
/root):同样必须是700,任何宽松权限(如755、775)都会被 SSH 或 login 程序拒绝
执行以下命令快速验证:
ls -ld /home/username id username
重点检查:第三列(属主)、第四列(属组)、第一列末尾九位权限字符。若看到 drwxr-xr-x 或 drwxrwxr-x 这类含 w 给组或其他人的权限,就是问题根源。
排查 SSH 登录失败是否由家目录权限触发
OpenSSH 在登录前会主动检查家目录权限。只要发现组或其他人有写权限(w),就会直接中止登录并记录警告。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查看 SSH 日志:
sudo journalctl -u sshd -n 50 -o cat | grep -i "home\|permission" - 常见报错示例:
Authentication refused: bad ownership or modes for directory /home/alex - 注意:这个检查不依赖 SELinux 或挂载选项,是 OpenSSH 自身的硬性规则
修复权限与归属(谨慎操作)
修复动作必须分两步,顺序不能颠倒:
- 先修正归属:
sudo chown username:username /home/username - 再收紧权限:
sudo chmod 700 /home/username
特别注意:
- 不要用
chmod 755或chmod 775—— 即使你希望组内其他成员能访问某些子目录,也不能放宽家目录本身权限;应在子目录级单独授权 - 家目录下的
.ssh目录也需是700,authorized_keys文件需是600,否则密钥登录失败 - 若用户使用 NFS 或其他网络文件系统挂载家目录,还需确认服务器端导出权限及客户端挂载选项(如
noexec、nosuid可能干扰 shell 启动)
验证修复后是否生效
不要仅靠 ls -l 就认为搞定。真实验证方式是模拟登录:
- 本地终端切换:
su - username(观察是否报错、shell 是否正常启动) - SSH 连接测试:
ssh username@localhost(确保密钥或密码流程完整走通) - 检查关键子目录权限:
ls -ld /home/username/.ssh /home/username/.bashrc,确保无意外开放
如果仍失败,继续查 journalctl -u systemd-logind 或 auth.log,看是否有 PAM 模块(如 pam_access.so)在登录阶段额外拦截。










