在Linux系统中,通过cgroups(control groups)实现资源控制与隔离是现代系统管理的重要技术手段。本文将详细说明如何利用内核cgroups功能来限制用户和进程的资源使用。
cgroups基本概念
cgroups是Linux内核提供的一种机制,用于限制、记录和隔离进程组使用的物理资源(如CPU、内存、磁盘IO等)。通过cgroups可以实现对系统资源的精细控制。
实际配置案例
以下是在Ubuntu 20.04服务器上创建一个名为"limited_user"的用户组,并设置内存限制的完整步骤:
# 1. 创建用户组
sudo groupadd limited_users
# 2. 创建用户并加入组
sudo useradd -m -g limited_users -s /bin/bash limited_user
# 3. 创建cgroups目录结构
sudo mkdir -p /sys/fs/cgroup/memory/limited_users
# 4. 设置内存限制(例如1GB)
sudo echo 1073741824 > /sys/fs/cgroup/memory/limited_users/memory.limit_in_bytes
# 5. 将用户进程加入cgroups
sudo su - limited_user -c "sleep 3600" &
高级配置示例
为了更精细地控制,可以配置CPU份额:
# 创建CPU控制组
sudo mkdir -p /sys/fs/cgroup/cpu/limited_users
# 设置CPU份额(默认为1024)
sudo echo 512 > /sys/fs/cgroup/cpu/limited_users/cpu.shares
# 将进程加入该cgroups
安全注意事项
- 确保配置文件权限正确,防止未授权修改
- 定期审查cgroups配置,确保符合安全策略
- 避免设置过低的资源限制影响正常业务运行
通过合理使用cgroups,系统管理员可以在保证服务正常运行的同时,有效防止恶意或异常进程耗尽系统资源。

讨论