사용자의 자원 제한
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
$ 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)
.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
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> <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