답변:
하드 한계는 루트에 의해서만 증가 할 수 있습니다 (모든 프로세스에서 루트를 낮출 수 있음). 따라서 보안에 유용합니다. 루트가 아닌 프로세스는 하드 한계를 넘어 설 수 없습니다. 그러나 루트가 아닌 프로세스는 하위 프로세스보다 더 낮은 한계를 가질 수 없다는 점에서 불편합니다.
프로세스에 의해 언제든지 소프트 한계를 변경할 수 있습니다. 따라서 프로세스가 협력하는 한 편리하지만 보안에는 좋지 않습니다.
소프트 한계의 일반적인 사용 사례는 코어 덤프 ( ulimit -Sc 0
) 를 비활성화 하고 디버깅중인 특정 프로세스 ( (ulimit -Sc unlimited; myprocess)
) 에서 활성화 할 수있는 옵션을 유지하는 것입니다 .
ulimit
쉘 명령은 래퍼입니다 setrlimit
시스템 호출, 그래서 당신은 최종 문서를 찾을 곳이다.
일부 시스템은 모든 제한을 구현하지 않을 수 있습니다. 특히 일부 시스템은 파일 디스크립터에 대한 프로세스 별 제한을 지원하지 않습니다 (Linux에서는 수행). 그렇지 않으면 쉘 명령이 작동하지 않을 수 있습니다.
ulimit -m
, RLIMIT_RSS
)은 Linux에서 더 이상 유효하지 않은 제한의 예입니다. 그러나 가상 메모리 제한 ( ulimit -v
, RLIMIT_AS
)이 작동합니다.
prlimit
너무 쉘 유틸리티.
ulimit -n
? 매우 낮은 값 (bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'
) 으로 쉘을 실행하십시오 . 출력은 무엇입니까?