ulimit : 하드 한계와 소프트 한계의 차이 1024, 하드 제한이 10240입니다. 1024 개가

ulimit에서 하드 한계와 소프트 한계의 차이는 무엇입니까?

열린 파일 수에 대해서는 소프트 제한이 1024, 하드 제한이 10240입니다. 1024 개가 넘는 파일을 여는 프로그램을 실행할 수 있습니다. 소프트 한계는 무엇입니까?



답변

하드 한계는 루트에 의해서만 증가 할 수 있습니다 (모든 프로세스에서 루트를 낮출 수 있음). 따라서 보안에 유용합니다. 루트가 아닌 프로세스는 하드 한계를 넘어 설 수 없습니다. 그러나 루트가 아닌 프로세스는 하위 프로세스보다 더 낮은 한계를 가질 수 없다는 점에서 불편합니다.

프로세스에 의해 언제든지 소프트 한계를 변경할 수 있습니다. 따라서 프로세스가 협력하는 한 편리하지만 보안에는 좋지 않습니다.

소프트 한계의 일반적인 사용 사례는 코어 덤프 ( ulimit -Sc 0) 를 비활성화 하고 디버깅중인 특정 프로세스 ( (ulimit -Sc unlimited; myprocess)) 에서 활성화 할 수있는 옵션을 유지하는 것입니다 .

ulimit쉘 명령은 래퍼입니다 setrlimit시스템 호출, 그래서 당신은 최종 문서를 찾을 곳이다.

일부 시스템은 모든 제한을 구현하지 않을 수 있습니다. 특히 일부 시스템은 파일 디스크립터에 대한 프로세스 별 제한을 지원하지 않습니다 (Linux에서는 수행). 그렇지 않으면 쉘 명령이 작동하지 않을 수 있습니다.


답변

하드 제한은 보안을위한 것입니다. 루트가 아닌 사용자의 경우 현재 설정된 하드 한계에서 하드 한계 만 줄일 수 있습니다. 그는 그것을 증가시킬 수 없습니다. 하드 한계를 늘리는 것은 루트 사용자 만이 수행 할 수 있습니다 (또는 sudo 권한을 가지고있을 수도 있습니다). 루트가 아닌 사용자가 수행 할 수있는 작업은 프로세스에 대해 [0, 하드 제한] 범위에있는 제한 (소프트 제한이라고 함)을 선택하는 것입니다. 공정에서보고 고려되는 소프트 한계입니다.