우분투 컴퓨터의 모든 사용자에 대해 열린 파일 설명자를 최대로 늘리려 고합니다.
이 질문은이 질문에 대한 후속 조치입니다.
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를 사용하여 기본 쉘을 변경할 수 없습니다.
답변
비슷한 문제가 있었지만 SSH 로그인에서만 가능합니다. 콘솔을 통한 로컬 로그인은을 (를) 존중했습니다 /etc/security/limits.conf
.
밝혀 졌을 때,
UsePrivilegeSeparation yes
에서 /etc/ssh/sshd_config
파일, 다음 포크에게 계정의 ENV를 설정하는 권한이없는 아이를 sshd를. 이 자식은 권한이 없으므로 pam_limits.so 상한을 설정해도 아무런 영향이 없습니다.
내가 설정하자마자
UsePrivilegeSeparation no
에서 /etc/ssh/sshd_config
SSH 서비스 및 반송, 다음 limits.conf 파일은 SSH 로그인으로 존경했다.
답변
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
행운을 빕니다.
답변
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가 말한 것처럼 셸 프로파일을 확인하십시오.
답변
나는 여기에 내가 한 일과 같은 문제가있었습니다.
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가없는 것입니다. 다른 배포판에서는이 정확한 문제라고 생각하지 않습니다.
그러나 이것이 도움이되기를 바랍니다.
답변
필자의 경우 (Centos 6.10) strace는 로그인 프로세스 후반에 /etc/security/limits.conf 에서 제한을 설정 한 후 /etc/security/limits.d/90-nproc.conf 에서 모두 루트 사용자 :
* soft nproc 1024
root soft nproc unlimited