Na verdade, você só precisa executar o syscall (que é o que o comando ulimit
faz) com o recurso CAP_SYS_RESOURCE.
Existem dois valores distintos para cada limite: hard e soft. Soft pode ser aumentado até mesmo pelo usuário até o limite rígido. O limite rígido só pode ser aumentado com privilégios adequados (para alguns recursos, ele não pode ser aumentado com o limite do kernel). Veja man getrlimit
para informações mais detalhadas.
A maneira mais fácil de fazer isso é executá-lo pela raiz (ou seja, ao longo das linhas: su root; ulimit; su user
- primeiro tornar-se root, de lá mudar limites e su voltar para o usuário apropriado), a maneira segura é ter um binário que teria apenas o conjunto de recursos mencionado acima (consulte man setcap
e man capabilities
) e direitos de acesso adequados.
No seu caso, o limite rígido é 4096, então você não pode ir além disso sozinho (como usuário).