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

问题描述 投票:1回答:1

我正在使用基于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个回答
0
投票

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

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

没有更精细的方法。

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

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

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

再看看containers,也许是Docker

© www.soinside.com 2019 - 2024. All rights reserved.