限制进程在其生命周期内可以打开的文件描述符的数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了限制进程在其生命周期内可以打开的文件描述符的数量相关的知识,希望对你有一定的参考价值。

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

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

存在该问题是因为沙箱中存在少量世界可写目录,并且由于其他约束,文件创建权限无法撤销到执行进程。

  1. ulimit具有open files (-n)选项,但这仅指进程可以打开的并发文件描述符数。
  2. 我尝试了探索磁盘配额,但这看起来像用户可以创建的inode数量的用户特定限制。理想情况下,我希望这是流程限制而不是用户限制。

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

要么

Q2)任何低开销监控工具,用于跟踪进程的open(O_CREAT)呼叫数量?

答案

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

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

没有更精细的方法。

任何低开销监控工具,用于跟踪进程打开(O_CREAT)调用的次数?

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

您可以根据需要编写和使用一些FUSE文件系统。

再看看containers,也许是Docker

以上是关于限制进程在其生命周期内可以打开的文件描述符的数量的主要内容,如果未能解决你的问题,请参考以下文章

ulimit命令用来限制系统用户对shell资源的访问(设置Linux文件打开数)

【fd】Linux文件描述符

进程管理

Linux基础优化与安全小结

在 Web 服务的生命周期内共享 Web 服务变量?

ulimit -n 可以打开最大文件描述符的数量 为n