【问题标题】:Limit the number of file descriptors a process can open over its lifespan限制进程在其生命周期内可以打开的文件描述符的数量
【发布时间】:2018-03-06 10:24:17
【问题描述】:

我在一个基于 debian 的系统上。我试图解决的漏洞之一是创建多个 zero byte 文件,这往往会耗尽文件系统中可用的 inode。

我的系统允许用户在沙盒环境中执行代码,并且设置了所有资源 ulimit(内存、cpu、进程、STDOUT 等)。我无法设置的一个资源限制是进程可以创建的文件总数。

问题的存在是因为沙箱中有几个全局可写目录,并且由于其他限制,无法将文件创建权限撤消给正在执行的进程。

  1. ulimit 有open files (-n) 选项,但这仅指进程可以打开的并发文件描述符的数量。

  2. 我尝试探索磁盘配额,但这看起来像是用户对用户可以创建的 inode 数量的特定限制。理想情况下,我希望这是进程限制而不是用户限制。

Q1) 有没有可靠的方法来限制进程在其生命周期内可以创建的文件描述符的数量?

Q2) 是否有任何低开销监控工具来跟踪进程的open(O_CREAT) 调用次数?

【问题讨论】:

    标签: ubuntu process linux-kernel file-descriptor ulimit


    【解决方案1】:

    您可以使用setrlimit(2)(可以与内置的bash ulimit一起使用)限制进程内的资源。

    您可以在文件系统上设置disk quotas

    没有更细粒度的方法了。

    是否有任何低开销的监控工具来跟踪进程的 open(O_CREAT) 调用次数?

    您可以使用inotify(7) 设施监控文件的创建。

    您可以编写和使用一些 FUSE 文件系统来满足您的需要。

    还要查看containers,也许是Docker

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多