在没有 PAM 的情况下设置 ulimit

在没有 PAM 的情况下设置 ulimit

怎么做?如果我的 GNU/Linux 操作系统上没有 PAM,则默认情况下打开的文件数为 1024,并且ulimit -n NNNN无论 /etc/security/limits.conf 中有何写入,都无法将其提高到 4096 以上(通过命令)。那么,如果没有 PAM,它是如何工作的以及在这种情况下如何设置限制呢?

===更新===

我自己决定使用 PAM。对于那些想要超出不使用 PAM 时打开文件的硬限制的人,请查找 和中RLIMIT_NOFILE的常量,include/asm-generic/resource.h其中将 4096 个文件的数量定义为 rlimits 的硬限制。另请检查 CAP_SYS_RESOURCE,需要它才能调用正在运行的系统以超出限制。似乎没有办法像bash那样进行系统调用,但它可以实现为二进制可执行文件。或者你可以打一个内核补丁。INR_OPEN_MAXinclude/linux/fs.hsetrlimit()setrlimit()

答案1

实际上可以,您只需要使用ulimitCAP_SYS_RESOURCE 功能运行系统调用(这就是命令的作用)。

每个限制都有两个不同的值:硬限制和软限制。用户甚至可以将软限制提高到硬限制。硬限制只能通过适当的权限来增加(对于某些资源,它不能超过内核限制)。请参阅man getrlimit获取更多详细信息。

最简单的方法是通过 root 运行它(即按照以下方式运行:su root; ulimit; su user- 首先成为 root,从那里更改限制,然后 su 返回到适当的用户),安全的方法是拥有一个二进制文件,该二进制文件只需上述功能集(参见man setcapman capabilities)和适当的访问权限。

就您而言,硬限制是 4096,因此您自己(作为用户)不能超出该限制。

相关内容