在使用 CentOS 系统部署各种服务(如 Nginx、MySQL、Redis 等)时,合理配置服务用户权限是保障系统安全的重要一环。本文将从零开始,为 Linux 新手详细讲解如何创建和管理服务专用用户,并正确设置其权限,避免因权限过高导致的安全风险。

为什么需要为服务单独创建用户?
很多初学者习惯直接用
root用户运行服务,这非常危险!一旦服务被攻击,攻击者就拥有了整个系统的控制权。而为每个服务创建独立的非登录、无家目录的系统用户,可以实现“最小权限原则”——即服务只拥有完成其任务所需的最低权限。
这也是 CentOS系统安全 的最佳实践之一。
步骤一:创建专用服务用户
以部署一个名为
myapp的服务为例,我们创建一个名为
myapp的系统用户:
参数说明: 假设你的服务程序放在 sudo useradd \ --system \ --no-create-home \ --shell /sbin/nologin \ --comment "MyApp Service User" \ myapp--system
:创建系统用户(UID 通常小于 1000) --no-create-home
:不创建 /home/myapp 目录,节省空间 --shell /sbin/nologin
:禁止该用户通过 SSH 或终端登录 --comment
:添加描述信息,便于识别步骤二:设置服务文件/目录权限
/opt/myapp
,日志目录为 /var/log/myapp
,你需要将这些目录的所有权赋予 myapp
用户:
这样,# 设置程序目录权限sudo chown -R myapp:myapp /opt/myapp# 创建并设置日志目录sudo mkdir -p /var/log/myappsudo chown myapp:myapp /var/log/myappsudo chmod 750 /var/log/myappmyapp
用户就能读写自己的程序和日志,但无法访问其他用户的文件。
步骤三:在 systemd 服务中指定用户
如果你使用
systemd管理服务(CentOS 7+ 默认),可以在服务单元文件中指定运行用户。例如,创建
/etc/systemd/system/myapp.service:
保存后重载 systemd 并启动服务: 现在,你的服务将以 通过为每个服务创建独立的系统用户,并合理配置 Linux用户权限管理 策略,你可以显著提升 CentOS 服务器的安全性。这种做法不仅符合安全规范,也便于后续维护和故障排查。 记住:永远不要用 root 运行普通服务! 掌握 服务账户权限配置 技能,是你迈向专业 Linux 运维的重要一步。[Unit]Description=MyApp ServiceAfter=network.target[Service]Type=simpleUser=myapp Group=myappExecStart=/opt/myapp/bin/myappWorkingDirectory=/opt/myappRestart=on-failure[Install]WantedBy=multi-user.targetsudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myappmyapp
用户身份运行,即使被入侵,攻击者也无法获得 root 权限。常见问题与安全建议
❌ 不要给服务用户分配密码或 shell 权限 ✅ 定期检查 /etc/passwd
和 /etc/group
,确保没有异常用户 ✅ 使用 ps aux | grep myapp
验证服务是否以正确用户运行 ✅ 日志目录权限建议设为 750
或 700
,防止其他用户读取敏感日志总结
