ulimit에서 하드 한계와 소프트 한계의 차이는 무엇입니까?
열린 파일 수에 대해서는 소프트 제한이 1024, 하드 제한이 10240입니다. 1024 개가 넘는 파일을 여는 프로그램을 실행할 수 있습니다. 소프트 한계는 무엇입니까?
답변
하드 한계는 루트에 의해서만 증가 할 수 있습니다 (모든 프로세스에서 루트를 낮출 수 있음). 따라서 보안에 유용합니다. 루트가 아닌 프로세스는 하드 한계를 넘어 설 수 없습니다. 그러나 루트가 아닌 프로세스는 하위 프로세스보다 더 낮은 한계를 가질 수 없다는 점에서 불편합니다.
프로세스에 의해 언제든지 소프트 한계를 변경할 수 있습니다. 따라서 프로세스가 협력하는 한 편리하지만 보안에는 좋지 않습니다.
소프트 한계의 일반적인 사용 사례는 코어 덤프 ( ulimit -Sc 0
) 를 비활성화 하고 디버깅중인 특정 프로세스 ( (ulimit -Sc unlimited; myprocess)
) 에서 활성화 할 수있는 옵션을 유지하는 것입니다 .
ulimit
쉘 명령은 래퍼입니다 setrlimit
시스템 호출, 그래서 당신은 최종 문서를 찾을 곳이다.
일부 시스템은 모든 제한을 구현하지 않을 수 있습니다. 특히 일부 시스템은 파일 디스크립터에 대한 프로세스 별 제한을 지원하지 않습니다 (Linux에서는 수행). 그렇지 않으면 쉘 명령이 작동하지 않을 수 있습니다.
답변
하드 제한은 보안을위한 것입니다. 루트가 아닌 사용자의 경우 현재 설정된 하드 한계에서 하드 한계 만 줄일 수 있습니다. 그는 그것을 증가시킬 수 없습니다. 하드 한계를 늘리는 것은 루트 사용자 만이 수행 할 수 있습니다 (또는 sudo 권한을 가지고있을 수도 있습니다). 루트가 아닌 사용자가 수행 할 수있는 작업은 프로세스에 대해 [0, 하드 제한] 범위에있는 제한 (소프트 제한이라고 함)을 선택하는 것입니다. 공정에서보고 고려되는 소프트 한계입니다.