Linux 中怎么配置多用户环境下的资源隔离

夏强姑娘_8814

夏强姑娘_8814

2026-10-09

697人浏览

原创

linux多用户资源隔离需协同进程、内存、cpu、网络及文件系统:用cgroups v2统一管控资源配额,pam+limits.conf限制会话基础资源,network namespace或vlan实现网络硬隔离,user namespace+subuid/subgid隔离uid/gid空间。

linux 中怎么配置多用户环境下的资源隔离

Linux 中配置多用户环境下的资源隔离,不能只靠改权限或建用户,得从进程、内存、CPU、网络、文件系统多个层面协同控制。目标不是“不让用户互相看见”,而是“即使同时在线、同时跑任务,彼此也不抢资源、不越权、不干扰”。

用 cgroups v2 统一管控 CPU 与内存

cgroups v2 是当前推荐方式,替代老旧的 cgroups v1,支持层级化、线程级控制,且与 systemd 深度集成。

  • 启用 cgroups v2:确认内核启动参数含 systemd.unified_cgroup_hierarchy=1,检查 /proc/sys/fs/cgroup/unified 是否存在
  • 为每个用户创建资源控制器:在 /sys/fs/cgroup/user.slice/ 下新建子目录,如 tenant-a.slice,并写入 cpu.max(如 50000 100000 表示最多用 50% CPU 时间)和 memory.max(如 2G)
  • 绑定用户会话:通过 logind.conf 设置 UserTasksMax= 和 RuntimeDirectoryMode=,再配合 pam_systemd.so 自动将登录会话归入对应 slice

用 PAM + limits.conf 限制基础会话资源

这是最轻量、最通用的兜底手段,适用于所有 SSH 或本地终端登录场景。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • 编辑 /etc/security/limits.conf,例如:
    tenant-a soft nproc 200
    tenant-a hard nproc 400
    tenant-a soft nofile 1024
    tenant-a hard nofile 65536
    @developers hard memlock 512000
  • 确保 /etc/pam.d/sshd 和 /etc/pam.d/login 含有 session required pam_limits.so
  • 注意:这些限制仅对 shell 启动的进程生效,不自动覆盖 systemd 服务或容器内进程

用 network namespace 或 VLAN 实现网络层硬隔离

防止租户间端口冲突、ARP 欺骗、广播风暴,也避免误连或嗅探。

  • 若租户运行独立服务(如 Web、数据库),推荐为每人分配独立 netns:
    ip netns add tenant-b
    ip netns exec tenant-b ip link set lo up
    ip netns exec tenant-b python3 -m http.server 8000
  • 若租户共用物理网卡但需二层隔离,走 VLAN 子接口(如 ens33.101),再配 firewalld zone 或 nftables mark+drop 禁跨租户转发
  • 禁用 IP 转发(net.ipv4.ip_forward=0)除非明确需要路由功能

用 user namespace + subuid/subgid 隔离 UID/GID 空间

这是防止“UID 碰撞”和逃逸的关键——让 tenant-a 在容器里是 root,宿主机上却是 UID 100000,且无法映射到其他租户的 ID 段。

  • 在 /etc/subuid 和 /etc/subgid 中为每个租户分配不重叠段:
    tenant-a:100000:65536
    tenant-b:165536:65536
  • 启用 Docker 用户命名空间重映射:{"userns-remap": "tenant-a"} 写入 /etc/docker/daemon.json
  • 宿主机数据目录属主必须匹配映射起始 UID,否则容器内无法读写:
    chown 100000:100000 /data/tenant-a

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux入门 linux教程

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3910

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3353

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2493

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6030

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5682

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3333

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2845

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3059

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习