o sudo sempre define limites de processo para os números de /etc/security/limits.d?

3

Eu observei o seguinte comportamento:

[ec2-user@ip-10-66-68-55 ~]$ uname -a
Linux ip-10-66-68-55 3.4.103-76.114.amzn1.x86_64 #1
SMP Fri Sep 12 00:57:39 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[ec2-user@ip-10-66-68-55 ~]$ ulimit -H -n; ulimit -S -n
1000
1000
[ec2-user@ip-10-66-68-55 ~]$ cat /etc/security/limits.d/80-nofile.conf
ec2-user hard nofile 123456
ec2-user soft nofile 123456
[ec2-user@ip-10-66-68-55 ~]$ bash -c 'ulimit -H -n; ulimit -S -n'
#I expect this limit to be 1000,  same as above. it is.
1000
1000
[ec2-user@ip-10-66-68-55 ~]$ sudo -u ec2-user bash -c 'ulimit -H -n; ulimit -S -n'
#I expected this limit to be 1000,  the same as if I had not called sudo -u ec2-user
#Instead, I get the one from limits.d/80-nofile.conf. 
123456 
123456

Uma busca rápida na página man do sudo não mostrou nenhuma referência direta ao / etc / security / limits.

Eu quero contar com esse comportamento para garantir que um daemon que eu me importe seja executado com os limites definidos no 80-nofile.conf, mas não sei se é confiável. Está documentado em algum lugar?

Quais tipos de arquivos / variáveis de configuração afetam esse comportamento? posso dizer ao sudo para não sobrescrever os limites atuais?

    
por orm 24.10.2014 / 10:58

2 respostas

3

Você provavelmente deve dar uma olhada no arquivo /etc/pam.d/sudo e verificar se pam_limits.so é necessário nele ou em qualquer outro arquivo incluído.

Por exemplo, o arquivo /etc/pam.d/sudo no meu sistema se parece com abaixo.

#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive

Agora, você pode procurar pam_limits.so nos outros arquivos incluídos usando o parâmetro @inlude .

    
por 24.10.2014 / 11:37
1

Obrigado a @hrv pelo insight. Eu confirmei depois de um experimento rápido: quando o /etc/pam.d/sudo incluiu o pam_limits.so, então o sudo rodando os definiu, e quando o /etc/pam.d/sudo não os incluiu, então rodando o sudo não os definiu.

Eu verifiquei algumas máquinas diferentes e uma delas incluiu pam_limits.so em /etc/pam.d/sudo enquanto a outra não.

    
por 06.11.2014 / 04:42