리눅스 서버에서는 /etc/security/limits.conf 파일을 통해 사용자 및 프로세스의 리소스 사용량을 제한할 수 있습니다. 이 파일의 설정 값은 다른 방식으로 설정된 값들과 우선순위가 있어 이해하기 어려울 수 있습니다. 따라서 이 글에서는 /etc/security/limits.conf 파일의 설정 우선순위에 대해 자세히 살펴보겠습니다.

/etc/security/limits.conf 파일에서 제어할 수 있는 주요 설정값

  1. nproc (Number of Processes)
    • 사용자 또는 그룹이 생성할 수 있는 최대 프로세스 수를 제한합니다.
  2. nofile (Number of Open Files)
    • 사용자 또는 그룹이 열 수 있는 최대 파일 디스크립터 수를 제한합니다.
  3. memlock (Locked Memory)
    • 사용자 또는 그룹이 잠글 수 있는 최대 메모리 양을 제한합니다.
  4. as (Address Space)
    • 사용자 또는 그룹의 프로세스가 사용할 수 있는 최대 가상 메모리 양을 제한합니다.
  5. cpu (CPU Time)
    • 사용자 또는 그룹의 프로세스가 사용할 수 있는 최대 CPU 시간을 제한합니다.
  6. maxlogins (Maximum Logins)
    • 동시에 로그인할 수 있는 최대 사용자 수를 제한합니다.
  7. maxsyslogins (Maximum System Logins)
    • 시스템 계정(UID 0-99)이 동시에 로그인할 수 있는 최대 수를 제한합니다.
  8. priority (Priority)
    • 사용자 또는 그룹의 프로세스에 대한 스케줄링 우선순위를 설정합니다.
  9. fsize (File Size)
    • 사용자 또는 그룹이 생성할 수 있는 최대 파일 크기를 제한합니다.
  10. data (Data Segment Size)
    • 사용자 또는 그룹의 프로세스에 대한 데이터 세그먼트 크기를 제한합니다.
  11. stack (Stack Segment Size)
    • 사용자 또는 그룹의 프로세스에 대한 스택 세그먼트 크기를 제한합니다.
  12. core (Core File Size)
    • 사용자 또는 그룹이 생성할 수 있는 최대 코어 덤프 파일 크기를 제한합니다.
  13. rss (Resident Set Size)
    • 사용자 또는 그룹의 프로세스에 대한 최대 물리 메모리 사용량을 제한합니다.
  14. npts (Number of Pseudo-Terminals)
    • 사용자 또는 그룹이 생성할 수 있는 최대 의사 터미널 수를 제한합니다.

이러한 설정값들을 통해 시스템 리소스 사용량을 제어할 수 있으며, 값 뒤에 soft 또는 hard를 지정하여 유연하거나 엄격한 제한을 설정할 수 있습니다.

/etc/security/limits.conf 파일의 설정 우선순위

  1. 최고 우선순위: /etc/security/limits.conf 파일 내 계정/그룹 설정
    • /etc/security/limits.conf 파일 내에 별도의 계정 또는 그룹 설정이 있을 경우 가장 높은 우선순위를 가집니다.
    • 예시:
      # /etc/security/limits.conf 파일 내용
      @admin            hard    nproc     20000
      @admin            soft    nproc     16000
      

      위의 예시에서는 ‘admin’ 그룹에 대해 프로세스 개수 제한을 설정하고 있습니다. ‘hard’ 값은 절대 초과할 수 없는 제한이며, ‘soft’ 값은 초과할 수 있지만 일정 시간 후에는 제한이 적용됩니다.

  2. 두 번째 우선순위: /etc/security/limits.d/ 디렉토리 내 파일 설정
    • /etc/security/limits.d/ 디렉토리 내 파일에 설정된 값이 두 번째로 높은 우선순위를 가집니다.
    • 예시: ``` bash

      /etc/security/limits.d/20-nproc.conf 파일 내용

      • soft nproc 4096 ``` 위의 예시에서는 모든 사용자에 대해 프로세스 개수 제한을 4096개로 설정하고 있습니다.
  3. 세 번째 우선순위: ulimit 명령어 설정
    • 셸 세션에서 ulimit 명령어로 설정한 값이 세 번째로 높은 우선순위를 가집니다.
    • 예시:
      $ ulimit -n 2048
      

      위의 예시에서는 현재 셸 세션에 대해 열 수 있는 파일 디스크립터 개수를 2048개로 제한하고 있습니다.

  4. 최저 우선순위: 시스템 기본값
    • 위의 설정들이 없을 경우 시스템 기본값이 적용됩니다.

주의사항:

  • /etc/security/limits.conf 파일의 설정이 가장 높은 우선순위를 가지므로, 이 파일을 잘못 수정하면 시스템 전체에 영향을 줄 수 있습니다.
  • 따라서 해당 파일을 수정할 때는 매우 주의해야 하며, 백업을 하는 것이 좋습니다.
  • 일반 사용자에게 시스템 사용 권한을 제한하는 경우, 중복 설정으로 인해 사용자가 시스템을 사용할 수 없게 될 수 있습니다.

추가 정보:

  • /etc/security/limits.d/ 디렉토리에 있는 파일들은 /etc/security/limits.conf 파일과 함께 적용됩니다.
  • ulimit 명령어를 통해 셸 세션에서 직접 설정한 값은 가장 낮은 우선순위를 가집니다.

결론

종합적으로, /etc/security/limits.conf 파일의 설정이 가장 높은 우선순위를 가지며, 이 파일을 수정할 때는 매우 주의해야 합니다. 또한 일반 사용자의 시스템 사용 권한을 제한할 때는 중복 설정으로 인한 문제가 발생하지 않도록 주의해야 합니다. 이러한 이해를 바탕으로 리눅스 서버의 리소스 관리를 효과적으로 수행할 수 있을 것입니다.


관련 게시글

linux ulimit 설정 방법과 이해를 위한 완벽 가이드 : https://hunihub.link/os/linux-ulimit1

태그: , ,

카테고리:

업데이트:

댓글남기기