Как изменить ограничения системной учетной записи Linux или пользователя, который не входит в shell

#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
  

Дополнительная документация: