限制普通用户系统查询能力的核心是使其“查不到”,即通过权限控制让敏感命令执行失败、关键路径不可读、系统接口不可见:调整ps/top等命令权限为750并移除dac绕过能力;启用hidepid=2限制/proc访问;严格保护/etc/shadow等文件为600;用alias限定ps默认范围;结合acl实现单用户级细粒度控制。

限制普通用户的系统查询能力,核心是控制其对敏感命令、配置文件和系统信息接口的访问权限,而不是简单禁用账户或锁死终端。关键在于“查不到”——让命令执行失败、目录不可读、关键文件不可见。
屏蔽关键系统信息命令
普通用户常通过 ps、top、netstat、lsof、systemctl list-units 等命令获取进程、服务、端口等信息。限制方式不是卸载命令,而是调整其可执行权限或使用 capabilities 控制:
- 将
/usr/bin/ps、/usr/bin/top的权限改为750(即rwxr-x---),仅允许 root 和特定组(如sysmon)执行; - 用
setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/ps移除普通用户绕过 DAC 检查的能力,使其无法查看其他用户进程; - 对
systemctl,可通过sudoers或 systemd 的RestrictAddressFamilies、RestrictNamespaces等单元级限制,而非全局禁用。
限制对系统路径的读取权限
很多系统信息藏在 /proc、/sys、/etc 下。普通用户默认可读部分路径,需收紧:
-
/proc:启用内核参数hidepid=2(写入/etc/default/grub中的GRUB_CMDLINE_LINUX),重启后普通用户只能看到自己的进程目录; -
/sys:挂载时加hidepid=2或通过sysctl -w kernel.unprivileged_userns_clone=0防止滥用用户命名空间探测硬件; -
/etc/shadow、/etc/shadow-、/etc/sudoers等必须保持600或400,属主为 root,组和其他无任何权限; -
/var/log/下日志文件(如auth.log、secure)应设为640,并确保普通用户不在syslog或adm组中。
禁用或重定向高危信息接口
某些命令本身不危险,但组合使用可枚举系统状态。可采用“软限制”策略:
- 用
alias ps='ps -u $USER'覆盖用户 shell 环境,使其默认只看到自身进程(需配合/etc/skel/.bashrc全局部署); - 将
hostnamectl、loginctl等 D-Bus 接口服务设为RestrictSUIDSGID=yes,并移除普通用户对org.freedesktop.login1的 D-Bus 权限; - 对
find / -type f -name "*.conf" 2>/dev/null类探测行为,无法完全禁止,但可通过noexec挂载/tmp、/var/tmp并启用fs.suid_dumpable=0增加利用难度。
用 ACL 补充 UGO 权限粒度不足
标准 rwx 权限只有三类角色,难以精准放行/禁止某用户查某文件。ACL 提供单用户/单组级控制:
- 例如,允许运维组查
/etc/fstab,但禁止开发用户:setfacl -m u:devuser:--- /etc/fstab; - 递归限制用户对
/proc/[0-9]*/的访问不现实,但可对关键配置目录如/etc/systemd/system/设置 ACL,仅开放必要组读取; - 检查是否启用 ACL:挂载选项含
acl(如mount | grep acl),未启用需在/etc/fstab中添加并重新挂载。











