Systemd LimitNOFILE 상한은 4096입니다.

Systemd LimitNOFILE 상한은 4096입니다.

set 을 사용하는 시스템 사용자 서비스가 있습니다 LimitNOFILE. 이 값은 4096에 도달할 때까지 유지됩니다. 그 이후에는 4096으로 제한됩니다. DefaultLimitNOFILE늘려 보기도 했습니다 /etc/systemd/user.conf.

이는limit.conf에 올바르게 설정되어 있으며 즉시 사용 가능한 새 셸에서 작동합니다. 그러나 systemd는 해당 파일에 관심이 없다고 들었습니다. 무엇이 문제일까요?

답변1

늦은 응답, limits.confsystemd가 실행 중일 때는 사용되지 않습니다( limits.conf비systemd 시스템에 적용됨).

실제로 원하는 파일은 다음과 같습니다. /etc/systemd/system.conf- 이것은 전역 구성입니다. 그러면 /etc/systemd/user.conf사용자당 한도를 추가로 지정할 수 있습니다.

특히 귀하의 경우에는 더 높은 한도를 구성하더라도 더 낮은 한도가 있고 한도 역할을 하기 user.conf때문에 아무런 효과가 없습니다.system.confuser.conf

Ao_Ao

답변2

에서 man systemd.exec:

시스템 장치의 경우 이러한 자원 제한을 자유롭게 선택할 수 있습니다. 그러나 사용자 단위(즉, systemd(1)의 사용자별 인스턴스에 의해 실행되는 단위)의 경우 이러한 제한에는 운영 체제에서 시행하는 (잠재적으로 더 제한적인) 사용자별 제한이 적용됩니다.

시스템은 프로세스당 열린 파일 수를 4096개로 제한하여 구성할 수 있습니다. systemd에서 이 제한을 우회할 수 있도록 허용했다면 취약점이 존재하게 됩니다.

답변3

이는 버전 240 이전의 systemd와 관련이 있을 수 있습니다.

바라보다:https://github.com/systemd/systemd/blob/main/NEWS

변경사항 240개:...

  • Linux 커널에는 현재 사용자 공간 프로세스에 대한 기본 RLIMIT_NOFILE 리소스 제한이 1024(소프트) 및 4096(하드)으로 설정되어 있습니다.이전에는 systemd가 이를 분기한 모든 프로세스에 수정하지 않고 전달했습니다.. 이번 systemd 릴리스에서는 systemd가 전달하는 하드 제한이 512K로 증가하여 커널의 기본 설정을 무시하고 권한이 없는 사용자 공간 프로세스에서 할당할 수 있는 동시 파일 설명자 수가 크게 늘어납니다.

따라서 systemd를 버전 240 이상으로 업그레이드해 보십시오.

관련 정보