Linux权限管理:通过内核cgroups实现资源隔离

Ruth207 +0/-0 0 0 正常 2025-12-24T07:01:19 权限管理 · cgroups

Linux权限管理:通过内核cgroups实现资源隔离

在Linux系统安全中,资源隔离是防止恶意进程或故障服务影响系统稳定性的关键手段。控制组(cgroups)作为Linux内核的核心特性,为系统管理员提供了精细化的资源管控能力。本文将介绍如何使用cgroups进行资源隔离,并提供具体配置案例。

cgroups基本概念

cgroups通过将进程组织到树状结构中,实现对CPU、内存、磁盘I/O等资源的分配与限制。每个cgroup可以设置不同的资源限制策略,确保系统资源不会被单一进程耗尽。

实际配置案例:限制用户组资源使用

假设我们需要为特定用户组创建一个受限环境,限制其CPU和内存使用量。以下是详细步骤:

  1. 创建cgroup目录
sudo mkdir -p /sys/fs/cgroup/cpu/restricted_users
sudo mkdir -p /sys/fs/cgroup/memory/restricted_users
  1. 配置CPU限制(限制为50%)
# 设置CPU配额(100000微秒=100%)
echo 50000 | sudo tee /sys/fs/cgroup/cpu/restricted_users/cpu.cfs_quota_us
# 设置周期时间
echo 100000 | sudo tee /sys/fs/cgroup/cpu/restricted_users/cpu.cfs_period_us
  1. 配置内存限制(限制为512MB)
# 设置内存上限
echo 536870912 | sudo tee /sys/fs/cgroup/memory/restricted_users/memory.limit_in_bytes
  1. 将用户加入组并应用限制
# 创建用户组
sudo groupadd restricted
# 将用户添加到组中
sudo usermod -aG restricted username
# 设置进程归属cgroup
sudo cgexec -g memory:restricted_users -g cpu:restricted_users username

验证配置效果

使用以下命令验证限制是否生效:

# 查看资源使用情况
cat /sys/fs/cgroup/cpu/restricted_users/cpu.stat
cat /sys/fs/cgroup/memory/restricted_users/memory.usage_in_bytes

通过这种方式,我们可以在不修改应用程序的前提下,为不同用户或服务提供差异化的资源控制策略,增强系统整体安全性与稳定性。

推广
广告位招租

讨论

0/2000
黑暗之影姬
黑暗之影姬 · 2026-01-08T10:24:58
cgroups确实是个好东西,但手动配置太繁琐了,建议结合systemd管理,比如写个.service文件直接绑定到某个cgroup,省事又稳定。
天空之翼
天空之翼 · 2026-01-08T10:24:58
内存限制设置成512M有点紧,实际使用中最好留点余量,不然容易触发oom killer,影响业务进程。
算法之美
算法之美 · 2026-01-08T10:24:58
CPU配额设置为50%是够用的,但如果跑的是计算密集型任务,可以适当调高,关键是要监控资源占用情况。
RightBronze
RightBronze · 2026-01-08T10:24:58
这个方案适合做多租户隔离,不过要注意权限控制,cgroup目录的写权限得限制好,不然用户自己改配置就乱了