首页 > 运维 > linux运维 > 正文

如何限制用户资源 ulimit系统限制配置

P粉602998670
发布: 2025-08-19 13:00:02
原创
670人浏览过

<ol><li>ulimit是linux中用于控制用户或进程资源使用的机制,分为软限制(实际生效)和硬限制(软限制上限,仅root可提升);2. 临时设置通过ulimit命令实现,如ulimit -n 1024设置最大打开文件数,仅当前会话有效;3. 永久配置需修改/etc/security/limits.conf或/etc/security/limits.d/*.conf,格式为<domain> <type> <item> <value>,支持用户、组、通配符配置;4. 配置生效需系统启用pam_limits.so模块,且通过支持的登录方式(如ssh、本地终端)重新登录;5. systemd服务不读取limits.conf,需在服务单元文件中使用limitnofile等参数或修改systemd.conf全局设置;6. 验证可通过ulimit -a查看用户限制,或cat /proc/<pid>/limits查看具体进程;7. 注意su需使用su - username以触发pam加载,图形界面和容器环境可能不适用limits.conf,应避免盲目设置unlimited以防资源耗尽。合理配置需结合pam、systemd及实际场景,确保系统稳定性与安全性。</li></ol>

如何限制用户资源 ulimit系统限制配置

在 Linux 系统中,

ulimit
登录后复制
是一个用于控制用户或进程资源使用上限的机制。通过合理配置
ulimit
登录后复制
,可以防止某个用户或进程占用过多系统资源(如内存、文件数、CPU 时间等),从而保障系统稳定性和安全性。以下是关于如何配置和限制用户资源的详细说明。


一、ulimit 是什么?软限制与硬限制

ulimit
登录后复制
是 shell 内置命令,用于查看或设置当前 shell 及其派生进程的资源限制。它支持多种资源类型,比如:

  • 打开文件数(
    -n
    登录后复制
  • 进程数(
    -u
    登录后复制
  • 虚拟内存大小(
    -v
    登录后复制
  • 栈大小(
    -s
    登录后复制
  • CPU 时间(
    -t
    登录后复制
  • 文件大小(
    -f
    登录后复制

每个资源有 软限制(soft limit)硬限制(hard limit)

  • 软限制:实际生效的限制,进程不能超过此值。
  • 硬限制:软限制的上限,只有 root 用户可以提升。

普通用户只能降低或在硬限制范围内调整软限制,root 用户可以修改两者。


二、临时设置 ulimit(当前会话有效)

在终端中使用

ulimit
登录后复制
命令可临时修改限制:

# 查看所有限制
ulimit -a

# 设置最大打开文件数为 1024(软限制)
ulimit -n 1024

# 设置硬限制(需 root)
ulimit -Hn 2048

# 设置软限制
ulimit -Sn 1024
登录后复制
⚠️ 注意:这种方式只对当前 shell 及其子进程有效,重启后失效。

三、永久配置 ulimit:使用 /etc/security/limits.conf

要实现永久生效,需修改

/etc/security/limits.conf
登录后复制
文件或
/etc/security/limits.d/*.conf
登录后复制
中的配置文件。

配置格式:

<domain>    <type>    <item>    <value>
登录后复制
  • domain:用户、组(以 @ 开头)、或通配符(*、%)
  • type
    • soft
      登录后复制
      :软限制
    • hard
      登录后复制
      :硬限制
    • both
      登录后复制
      -
      登录后复制
      :同时设置软硬限制
  • item:资源类型,如
    nofile
    登录后复制
    nproc
    登录后复制
  • value:数值或
    unlimited
    登录后复制

常见配置示例:

# 用户 alice 最多打开 4096 个文件
alice    soft    nofile    4096
alice    hard    nofile    8192

# 所有用户最大进程数限制
*        soft    nproc     1024
*        hard    nproc     2048

# 组 users 限制内存使用
@users   hard    as        1048576    # 1GB (单位 KB)

# root 用户特殊权限
root     soft    nofile    65536
root     hard    nofile    65536

# 同时设置软硬限制
*        -       memlock   unlimited
登录后复制

支持的 item 类型(常用):

item 含义 单位
@@######@@ 打开文件描述符数
@@######@@ 用户可创建的最大进程数
@@######@@ 地址空间(虚拟内存) KB
@@######@@ 单个文件最大大小 KB
@@######@@ 锁定内存大小 KB
@@######@@ CPU 时间(分钟) 分钟
@@######@@ 栈大小 KB

四、使 limits 配置生效的关键条件

并非所有登录方式都会自动加载

nofile
登录后复制
,需确保以下条件:

  1. PAM 模块启用
    系统必须启用

    nproc
    登录后复制
    模块。检查以下文件是否包含:

    as
    登录后复制

    应包含一行:

    fsize
    登录后复制
  2. 登录方式支持

    卡拉OK视频制作
    卡拉OK视频制作

    卡拉OK视频制作,在几分钟内制作出你的卡拉OK视频

    卡拉OK视频制作 178
    查看详情 卡拉OK视频制作
    • 通过 SSH、本地终端登录通常支持。
    • systemd 服务、docker 容器、su 切换用户等可能不自动加载,需特别配置。
  3. 重启或重新登录生效
    修改后需重新登录用户才能生效(不能仅 source 或新开子 shell)。


五、systemd 服务中的 ulimit 限制

现代系统使用 systemd 时,服务的资源限制由 systemd 控制,不读取

memlock
登录后复制

需在服务单元文件中设置,例如:

cpu
登录后复制

或全局设置

stack
登录后复制

limits.conf
登录后复制

修改后运行:

pam_limits.so
登录后复制

六、验证配置是否生效

  1. 切换到目标用户:

    /etc/pam.d/common-session
    /etc/pam.d/sshd
    /etc/pam.d/login
    登录后复制
  2. 查看限制:

    session    required    pam_limits.so
    登录后复制
  3. 或查看进程限制(需知道 PID):

    limits.conf
    登录后复制

七、常见问题与注意事项

  • su 切换用户可能不生效:建议使用
    [Service]
    LimitNOFILE=8192
    LimitNPROC=4096
    LimitAS=infinity
    LimitSTACK=8192
    登录后复制
    (模拟登录 shell)。
  • 图形界面登录可能忽略 limits:取决于显示管理器配置。
  • 容器环境独立限制:Docker/K8s 使用自己的资源控制(如 cgroups),需单独配置。
  • 不要盲目设 unlimited:可能导致资源耗尽,影响系统稳定性。

基本上就这些。合理配置

/etc/systemd/system.conf
登录后复制
能有效防止资源滥用,但需结合 PAM、systemd 和实际使用场景综合设置。关键是理解软/硬限制、配置文件位置和加载机制。

DefaultLimitNOFILE=65536
DefaultLimitNPROC=32768
登录后复制
systemctl daemon-reexec
systemctl daemon-reload
登录后复制
su - username
登录后复制
ulimit -a
登录后复制
cat /proc/<PID>/limits
登录后复制
su - username
登录后复制
ulimit
登录后复制

以上就是如何限制用户资源 ulimit系统限制配置的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号