#linux #shell
#linux #оболочка
Вопрос:
Я запускаю виртуальную машину Linux, и у меня есть пользователь, которому нужны измененные ограничения для процессов, которые создает пользователь. Однако это пользователь с системной учетной записью (например, apache), и пользователь фактически никогда не входит в shell для запуска процессов, они запускаются из скрипта init.d или systemd.
Ответ №1:
Для служб, запущенных через systemd
, вы могли бы легко добавить ограничения, отредактировав файлы служб. Читать man systemd.exec
Table 1. Limit directives and their equivalent with ulimit
┌────────────────┬───────────────────┐
│Directive │ ulimit equivalent │
├────────────────┼───────────────────┤
│LimitCPU │ ulimit -t │
├────────────────┼───────────────────┤
│LimitFSIZE │ ulimit -f │
├────────────────┼───────────────────┤
│LimitDATA │ ulimit -d │
├────────────────┼───────────────────┤
│LimitSTACK │ ulimit -s │
├────────────────┼───────────────────┤
│LimitCORE │ ulimit -c │
├────────────────┼───────────────────┤
│LimitRSS │ ulimit -m │
├────────────────┼───────────────────┤
│LimitNOFILE │ ulimit -n │
├────────────────┼───────────────────┤
│LimitAS │ ulimit -v │
├────────────────┼───────────────────┤
│LimitNPROC │ ulimit -u │
├────────────────┼───────────────────┤
│LimitMEMLOCK │ ulimit -l │
├────────────────┼───────────────────┤
│LimitLOCKS │ ulimit -x │
├────────────────┼───────────────────┤
│LimitSIGPENDING │ ulimit -i │
├────────────────┼───────────────────┤
│LimitMSGQUEUE │ ulimit -q │
├────────────────┼───────────────────┤
│LimitNICE │ ulimit -e │
├────────────────┼───────────────────┤
│LimitRTPRIO │ ulimit -r │
├────────────────┼───────────────────┤
│LimitRTTIME │ No equivalent │
└────────────────┴───────────────────┘
Для скрипта init.d вы можете установить ограничения через ulimit
Ответ №2:
Изменение файла /etc/system/limits.conf или добавление файла в limits.d может ограничить максимальные системные ресурсы пользователя или группы, используя pam_limits.so . Это также предотвращает форк-бомбардировку, поскольку применяется к общим системным ресурсам пользователя, используемым во всех пользовательских процессах. Следующая строка также должна быть добавлена в файл /etc/pam.d/login, чтобы включить pam_limits.so модуль:
session required /lib/security/pam_limits.so
limits.conf пример содержимого:
* soft core 0
* hard nofile 512
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
:123 hard cpu 5000
@500: soft cpu 10000
600:700 hard locks 10
Дополнительная документация: