服务器服务权限管理要求所有服务以专属低权限账号运行,禁止使用root;每个服务需绑定独立非登录用户,配置User/Group、NoNewPrivileges等限制,并定期巡检与加固。
服务器系统服务的运行权限管理,本质是把“谁在跑、以谁的身份跑、能干啥”这三件事管清楚。默认情况下,很多服务(比如 Apache、Nginx、MySQL)会以 root 或高权限用户启动,一旦被攻破,攻击者就能直接获得系统控制权。标准化管理的目标就是:所有服务都用专属低权限账号运行,且该账号仅具备完成本职工作所需的最小能力。
每个服务必须绑定一个独立、非登录、无 shell 的专用用户,不能共用 root 或普通运维账号。这个用户只负责运行对应服务进程,不参与交互、不拥有家目录、不分配密码。
useradd -r -s /sbin/nologin appuser 创建先确认当前哪些服务还在用高危身份运行:
ps aux | awk '{print $1,$11}' | grep -E '(/usr|/opt|/var)' | sort -u
/usr/bin/nginx)systemctl show --property=User,Group nginx.service,确认 User= 字段不是 root/etc/nginx/nginx.conf 中 user 指令是否已设为 nginx; 或 www-data;
/etc/systemd/system/myapp.service),在 [Service] 段添加:User=myapp<br>Group=myapp<br>NoNewPrivileges=true<br>RestrictSUIDSGID=true
光换用户还不够,得防止它“越界”:
sudo usermod -s /sbin/nologin nginx
NoNewPrivileges=true(写入 service 文件)RestrictSUIDSGID=true
ProtectHome=true(隐藏 /home)、ProtectSystem=full(挂载 /usr、/boot 只读)PrivateNetwork=true(隔离网络命名空间)权限配置容易被后续更新或手动操作覆盖,需固化检查机制: