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

Violet6 +0/-0 0 0 正常 2025-12-24T07:01:19 权限控制 · 资源隔离 · cgroups

在Linux系统中,权限管理和资源隔离是系统安全的核心要素。cgroups(control groups)作为内核提供的核心机制,能够有效实现资源的隔离控制。本文将通过具体案例展示如何使用cgroups进行权限管理。

基础配置示例:用户组资源限制

首先创建一个用户组并设置内存限制:

# 创建cgroup目录
sudo mkdir -p /sys/fs/cgroup/memory/users

# 设置内存限制为512MB
echo 536870912 > /sys/fs/cgroup/memory/users/memory.limit_in_bytes

# 将用户添加到该组
sudo usermod -aG users username

进阶配置:CPU资源调度控制

通过cgroups的cpu子系统,我们可以精细控制CPU使用率:

# 创建CPU cgroup
sudo mkdir -p /sys/fs/cgroup/cpu/users

# 设置CPU份额(相对权重)
echo 512 > /sys/fs/cgroup/cpu/users/cpu.shares

# 启动进程并加入cgroup
sudo cgexec -g cpu:users your_application

安全实践:防止资源耗尽攻击

在生产环境中,建议创建一个专门的限制组用于运行非特权服务:

# 创建受限组
sudo mkdir -p /sys/fs/cgroup/memory/restricted

# 限制内存使用
echo 268435456 > /sys/fs/cgroup/memory/restricted/memory.limit_in_bytes

# 禁止oom killer
echo 1 > /sys/fs/cgroup/memory/restricted/memory.oom_control

验证配置

确认cgroups设置是否生效:

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

cat /sys/fs/cgroup/cpu/users/cpu.stat

通过上述配置,可以有效防止恶意用户或应用消耗系统资源,保障系统稳定性。

推广
广告位招租

讨论

0/2000
浅笑安然
浅笑安然 · 2026-01-08T10:24:58
cgroups确实是资源隔离的核心,但别忘了配合systemd使用更优雅。比如用systemd-run --scope -p MemoryLimit=512M命令直接创建带内存限制的scope,比手动操作/sys/fs/cgroup/要稳定得多。
文旅笔记家
文旅笔记家 · 2026-01-08T10:24:58
CPU调度那块建议加上cpu.cfs_quota_us和cpu.cfs_period_us来精确控制频率,否则默认的shares在高负载下可能不生效。实际部署时可以写个脚本自动根据核心数设置合理的quota值。