자원 제한

정승균·2021년 1월 10일
0

리눅스

목록 보기
29/29
post-thumbnail

ulimit


1. 옵션

  • 사용자의 자원 제한

  • Soft limit <= Hard limit

옵션설명
-a현재 사용자의 모든 자원 제한값 출력
-S<item>soft limit 제한 값 출력
-H<item>hard limit 제한 값 출력
jsg@jsg-ubuntu:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15446
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15446
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

2. 설정

  • $ ulimit -S<item> limit

  • Hard limit은 왠만하면 건들이지 말자

  • 아래는 cpu time을 제한한 예

jsg@jsg-ubuntu:~$ cat loop.sh
#! /bin/bash
while :; do
	let a++
done

jsg@jsg-ubuntu:~$ ulimit -St 5
jsg@jsg-ubuntu:~$ bash loop.sh
CPU 시간 제한 초과함 (core dumped)

3. login시 자동 설정

  • .profile 에 ulimit 명령어를 넣으면 됨

  • 하지만 이 방법은 사용자가 수정이 가능하므로 강제성은 없음

# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"

# ulimit config
ulimit -Sc 256000 -Sn 500 -Su 256

Ⅱ. PAM


  • login시 제약 설정

  • /etc/pam.d/login을 보면 pam_limits을 사용하고 있음을 볼 수 있음

# Sets up user limits according to /etc/security/limits.conf
# (Replaces the use of /etc/limits in old login)
session    required   pam_limits.so
  • 실제 설정파일은 위와 같이 /etc/security/limits.conf 에 있음

  • 하지만 이것을 보통 직접 건들이지는 않고 /etc/security/limits.d 에 .conf 파일을 생성해서 작성함

  • 다음과 같이 작성 ( man limits.conf 참조)

    • domain : 제한대상 유저 / @그룹 / 전체(*)
    • type : soft / hard / -
    • item : 제한할 항목
    • value : 제한값
#<domain>      <type>  <item>         <value>
*               soft    core            0
root            hard    core            100000
*               hard    rss             10000
@student        hard    nproc           20
@faculty        soft    nproc           20
@faculty        hard    nproc           50
ftp             hard    nproc           0
ftp             -       chroot          /ftp
@student        -       maxlogins       4

0개의 댓글