怎么做?如果我的 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_MAX
include/linux/fs.h
setrlimit()
setrlimit()
答案1
实际上可以,您只需要使用ulimit
CAP_SYS_RESOURCE 功能运行系统调用(这就是命令的作用)。
每个限制都有两个不同的值:硬限制和软限制。用户甚至可以将软限制提高到硬限制。硬限制只能通过适当的权限来增加(对于某些资源,它不能超过内核限制)。请参阅man getrlimit
获取更多详细信息。
最简单的方法是通过 root 运行它(即按照以下方式运行:su root; ulimit; su user
- 首先成为 root,从那里更改限制,然后 su 返回到适当的用户),安全的方法是拥有一个二进制文件,该二进制文件只需上述功能集(参见man setcap
和man capabilities
)和适当的访问权限。
就您而言,硬限制是 4096,因此您自己(作为用户)不能超出该限制。