Alterações no /etc/security/limits.conf e /etc/security/limits.d/20-nproc.conf não surtem efeito

5

Em uma versão do CentOS Linux 7.1.1503 (kernel do Linux versão 3.10.x), adicionei as seguintes linhas a /etc/security/limits.conf e /etc/security/limits.d/20-nproc. conf:

someuser          soft    nofile     8000
someuser          hard    nofile     8000

Após reinicializar a VM, ulimit -n ainda relata 4096, e ulimit -n 8000 ainda resulta em "-bash: ulimit: arquivos abertos: não é possível modificar o limite: Operação não permitida".

Estou perplexo sobre como aumentar o limite de arquivos abertos neste momento.

    
por Sam in MA 25.07.2016 / 23:24

2 respostas

5

O erro pode ocorrer devido a vários motivos.

Primeiro de tudo, use o seguinte comando para exibir o número máximo de descritores de arquivos abertos:

$ cat /proc/sys/fs/file-max

Vamos fingir que a saída foi 4096, o que isso significa? Isso significa que 4096 arquivos que um usuário normal pode abrir em uma única sessão de login, você também pode exibi-lo verificando seus limites Hard e Soft usando os comandos da seguinte maneira:

$ ulimit -Hn
$ ulimit -Sn

O número de descritores de arquivos abertos simultaneamente em todo o sistema pode ser alterado, editando /etc/sysctl.conf . Você pode aumentar o número máximo de arquivos abertos definindo limites de descritores de arquivos em todo o sistema como um novo valor na variável do kernel em /proc/sys/fs/file-max da seguinte maneira:

$ sysctl -w fs.file-max=200000     #it forces the limit to 200000 files

Em seguida, você deve editar o arquivo /etc/sysctl.conf para que, após a reinicialização, a configuração permaneça como você desejava. Para fazer isso, adicione as seguintes linhas:

$ fs.file-max = 200000

Não é preciso sair e fazer login novamente, basta digitar:

$ sysctl -p

Depois, você pode verificar as alterações:

$ cat /proc/sys/fs/file-max

OR

$ sysctl fs.file-max

Em seguida, para alterar os limites de Soft e Hard para os usuários, é melhor fazer o login como root, já que um usuário normal só pode alterar seu limite Soft. Os limites rígidos são gerenciados pelo root. Como você mencionou, para fazer isso como root, você deve alterar o FD (User Level File-Discriptor) em /etc/security/limits.conf . Por exemplo, se é para o usuário do Oracle:

oracle           soft    nofile          4096
oracle           hard    nofile          63536

Para ver as alterações, não é necessário reinicializar, basta relogar via sudo -i e verificar se funciona ou não, para ter certeza de qual é o problema. E para usuários sem login, você deve fazer o seguinte como root:

$ sudo -i -u <user>

BTW, você pode precisar de editar o arquivo /etc/pam.d/login e adicionar a seguinte linha:

$ session required pam_limits.so

pam_limit.so em /etc/pam.d/login significa no momento do login, mas não no sudo, enquanto /etc/pam.d/sudo também será aplicado ao executar sudo sem "-i", você também pode precisar aplicar as alterações acima em /etc/pam.d/system-auth dependendo das suas necessidades. Eu recomendo que você leia sobre módulos PAM.

BTW, para aplicar limites instantâneos aos processos atualmente em execução, você deve fazer o seguinte, além de alterar /etc/security/limits.conf :

$ prlimit

Recomendo que você leia este artigo do RedHat , já que você pode se deparar com:

On some Linux systems setting "hard" and "soft" limits in the following examples might not work properly when you log in as user oracle via SSH. It might work if you log in as root and su to oracle. If you have this problem try to set UsePrivilegeSeparation to "no" in /etc/ssh/sshd_config and restart the SSH daemon by executing service sshd restart. The privilege separation does not work properly with PAM on some Linux systems. Make sure to talk to the people in charge of security before disabling the SSH security feature "Privilege Separation".

Espero poder ajudar. Boa sorte.

    
por 26.07.2016 / 12:10
1

Você pode precisar verificar o perfil de algum usuário. Quando algum login de usuário. perfil pode mudar seu ulimit. Arquivos a serem verificados: / etc / profile / etc / bashrc ~ someuser / .bash_profile ~ someuser / .bashrc

    
por 26.07.2016 / 03:02

Tags