在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
通过上述配置,可以有效防止恶意用户或应用消耗系统资源,保障系统稳定性。

讨论