sudo는 항상 프로세스 제한을 /etc/security/limits.d의 숫자로 설정합니까?

sudo는 항상 프로세스 제한을 /etc/security/limits.d의 숫자로 설정합니까?

나는 다음과 같은 행동을 관찰했습니다.

[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

sudo 매뉴얼 페이지를 빠르게 검색하면 /etc/security/limits에 대한 직접적인 참조가 표시되지 않습니다.

나는 관심 있는 데몬이 80-nofile.conf에 설정된 제한 내에서 실행되는지 확인하기 위해 이 동작에 의존하고 싶지만 이것이 신뢰할 수 있는지는 모르겠습니다. 어딘가에 문서화되어 있습니까?

어떤 유형의 구성 파일/변수가 이 동작에 영향을 줍니까? sudo가 현재 제한을 덮어쓰지 않도록 지시할 수 있나요?

답변1

/etc/pam.d/sudo파일 내부를 살펴보고 pam_limits.so해당 파일이나 포함된 다른 파일이 필요한지 확인해야 합니다.

예를 들어 /etc/pam.d/sudo내 시스템의 파일은 다음과 같습니다.

#%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

pam_limits.so이제 다음을 사용하여 포함된 다른 파일을 찾을 수 있습니다.@inlude범위.

답변2

통찰력을 주신 @hrv에게 감사드립니다. 빠른 실험 후 /etc/pam.d/sudo에 pam_limits.so가 포함되어 있을 때 sudo를 실행하면 실제로 설정되고, /etc/pam.d/sudo에 pam_limits.so가 포함되어 있지 않으면 sudo를 실행해도 설정되지 않는다는 것을 확인했습니다.

몇 가지 다른 컴퓨터를 확인했는데 한 컴퓨터에는 /etc/pam.d/sudo에 pam_limits.so가 있고 다른 컴퓨터에는 없습니다.

관련 정보