ulimit -n 변경하지 않음-values ​​limits.conf가 적용되지 않습니다


13

우분투 컴퓨터의 모든 사용자에 대해 열린 파일 설명자를 최대로 늘리려 고합니다.

이 질문은이 질문에 대한 후속 조치입니다.

pam_limits.so가 필요한 경우에도 열린 파일 설명자 limits.conf 설정을 ulimit에서 읽지 않습니다.

limits.conf에 필수 "루트"항목을 추가 한 것을 제외하고

여기에 항목이 있습니다

*               soft    nofile           100000
*               hard    nofile           100000
root            soft    nofile           100000
root            hard    nofile           100000

관련 라인하기 pam_limits.so취소 주석부터 /etc/pam.d/의 모든 관련 파일에 있었던 및 fs.file-max/etc/sysctl.conf에 올바르게 설정되어

그러나 여전히

abc@machine-2:/etc/pam.d$ ulimit -n
1024

재부팅 후.

무엇이 문제 일 수 있습니까?

내 기본 쉘은 / bin / sh이며 컴퓨터의 사용자가 일부 분산 인증 체계를 통해 인증되기 때문에 chsh를 사용하여 기본 쉘을 변경할 수 없습니다.


strace -o loglimit su-abc 및 그 egrep "(limit | open)"loglimit 이후에, pam 구성이 잘못되었을 수 있습니다
c4f4t0r

@ c4f4t0r, su 옵션 인-옵션은 마지막 인수 일 때만 새 로그인을 발생시킵니다. 나는 그 맨 페이지를 읽고 있었기 때문에 이것을 알고 있습니다. 또한 세부적으로, 일반 사용자는 suid 루트 이진을 추적 할 수 없습니다.
etherfish

ABC - 루트로 다음 명령 strace를 -o loglimit su를 사용할 필요가
c4f4t0r

스팸으로 죄송하지만 이런 종류의 문제는 unix.stackexchange.com/questions/200310/…
vladeli

답변:


5

비슷한 문제가 있었지만 SSH 로그인에서만 가능합니다. 콘솔을 통한 로컬 로그인은을 (를) 존중했습니다 /etc/security/limits.conf.

밝혀 졌을 때,

UsePrivilegeSeparation yes

에서 /etc/ssh/sshd_config파일, 다음 포크에게 계정의 ENV를 설정하는 권한이없는 아이를 sshd를. 이 자식은 권한이 없으므로 pam_limits.so 상한을 설정해도 아무런 영향이 없습니다.

내가 설정하자마자

UsePrivilegeSeparation no

에서 /etc/ssh/sshd_configSSH 서비스 및 반송, 다음 limits.conf 파일은 SSH 로그인으로 존경했다.


2
제 경우에는 sshd-config를로 변경했습니다 UsePAM yes. (sshd-config를 가리켜 서 +1)
Randall Whitman

4

ulimit가 / etc / profile 또는 ~ / .bashrc에 의해 적용되고 있다고 생각합니다. 귀하의 시스템에 복잡한 스팸이 있다는 점에서 무언가가 잘못되지 않음을 확인합니다.

또한 pam_limits (8)에 언급 된 것처럼 /etc/security/limits.d/에 구문 분석 파일이 잘못되었음을 확인했습니다.

세션 필수 pam_limits.conf 줄에 디버그 매개 변수를 추가 한 다음 로그인 할 때 /var/log/auth.log를 봅니다.

소프트 한계가 1024 인 경우 하드 한계는 무엇입니까?

su는 -l 인수를 사용하여 새롭고 새로운 로그인을해야합니다.

su -l -s / bin / bash

행운을 빕니다.


내 하드 한계는 4096입니다ulimit -Hn
Nerrve

4

Redhat 서버에서 루트로 기록

/etc/security/limits.conf

user01  -       nofile  2048

strace 명령은 루트로 기록

strace -o loglimit su - user01

다른 쉘 오픈 loglimit와 함께

grep "limit" loglimit
open("/lib64/security/pam_limits.so", O_RDONLY) = 6
 ..........
 ..........
 open("/etc/security/limits.conf", O_RDONLY) = 3
 read(3, "# /etc/security/limits.conf\n#\n#E"..., 4096) = 1823
 open("/etc/security/limits.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
 setrlimit(RLIMIT_NOFILE, {rlim_cur=2*1024, rlim_max=2*1024}) = 0

pam_limits 가로 드되었지만 ulimit -n을 사용하여 여전히 다른 값을 볼 수 있다면 @etherfish가 말한 것처럼 셸 프로파일을 확인하십시오.


3

나는 여기에 내가 한 일과 같은 문제가있었습니다.

strace 명령은 프로세스가 외부 라이브러리와 수행하는 모든 상호 작용을 인쇄하므로 구성이로드되었는지 확인할 수 있습니다.

그래서 위의 제안처럼 :

root:/etc/pam.d$ strace -o ~/loglimit su - glaudiston
glaudiston:~$ exit
logout
root:/etc/pam.d$ cat ~/loglimit | grep limits.conf

내 문제에서 strace 로그 (strace -o log su-username)에는 제한 텍스트 인스턴스가 없으므로 limits.conf 파일이로드되지 않았습니다.

먼저 pam_limits.so가 /etc/security/limits.conf를 찾습니다.

root:/etc/pam.d$ strings /lib/security/pam_limits.so | grep limits.conf
/etc/security/limits.conf

따라서 pam_limits.so 모듈이 /etc/pam.d ... (예 : /etc/pam.d/su)에있는 파일의 인증 작업에로드되었는지 확인합니다.

session   required    pam_limits.so

이제 사용자에게 "su"를 만들 수 있으며 제한이로드됩니다. strace 단계를 다시 실행하여 확인할 수 있습니다.

내 리눅스는 LFS이기 때문에 /etc/pam.d 파일에 pam_limits.so가없는 것입니다. 다른 배포판에서는이 정확한 문제라고 생각하지 않습니다.

그러나 이것이 도움이되기를 바랍니다.


1

필자의 경우 (Centos 6.10) strace는 로그인 프로세스 후반에 /etc/security/limits.conf 에서 제한을 설정 한 후 /etc/security/limits.d/90-nproc.conf 에서 모두 루트 사용자 :

*          soft    nproc     1024
root       soft    nproc     unlimited
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.