关键在于设为700(drwx------),即仅属主有全部权限,属组和其他用户完全无权;701和711因保留其他用户执行权(x),可被用于进入目录并探测内容,存在泄露风险。

限制普通用户查看其他用户的家目录内容,关键不是靠“701”或“711”这类权限组合,而是用700——即属主全权、属组和其他用户完全无权。701(rwx-----x)和711(rwx--x--x)都保留了其他用户的执行(x)权限,意味着只要知道路径,就能进入目录并配合ls -U或直接访问已知文件名来探测内容,存在明显泄露风险。
一、统一设为700是基础防线
家目录必须禁止其他用户任何访问能力,包括进入、列出、读取:
-
chmod 700 /home/用户名—— 最直接有效,结果为drwx------ - 批量处理所有普通用户:
awk -F: '$3 >= 1000 && $3 < 65534 {print $1}' /etc/passwd | xargs -I{} chmod 700 /home/{} - 检查是否生效:
ls -ld /home/用户名,确认输出中后六位全是-
二、确保属组不构成绕过通道
即使权限是700,若用户被误加进共享组(如users、staff),而该组对其他家目录有读/执行权,仍可能越权访问:
- 运行
id 用户名,确认其仅属于自身主组(如用户名),无额外附加组 - 剔除冗余组成员:
gpasswd -d 用户名 共享组名 - 避免将家目录属组设为
wheel或sudo等提权相关组
三、补充机制防隐蔽访问
仅靠chmod 700还不够,需堵住常见绕过方式:
-
禁用符号链接跨目录跳转:在
/etc/fstab中挂载/home时添加noexec,nosuid,nodev选项,并确保bind挂载不被滥用 -
关闭未授权的D-Bus接口:防止通过
loginctl或hostnamectl间接获取用户会话信息,可移除普通用户对org.freedesktop.login1的D-Bus访问权限 -
审计可疑访问行为:用
auditctl -w /home -p rx -k home_access监控非属主的读/执行操作
四、验证是否真“查不到”
切忌只看权限数字,要以目标用户身份实测:
- 切换到另一普通用户:
su - testuser - 尝试进入他人家目录:
cd /home/otheruser→ 应报Permission denied - 尝试列出内容:
ls /home/otheruser→ 应报Permission denied - 尝试访问已知文件:
cat /home/otheruser/.bashrc→ 同样拒绝
不复杂但容易忽略:700是底线,组管理是保障,运行时防护是补丁。三者缺一不可。


















