PAM limits: различия между версиями

Материал из ALT Linux Wiki
м (GordeevMaksim переименовал страницу Pam limits в PAM limits)
 
(не показано 13 промежуточных версий 2 участников)
Строка 1: Строка 1:
В Linux для аутентификации пользователей используется подсистема PAM (Pluggable Authentication Modules). PAM используется везде, где требуется аутентификация пользователя или проверка его прав.
{{stub}}
== Описание ==
В Linux для аутентификации пользователей используется подсистема — '''PAM''' (''Pluggable Authentication Modules''). PAM используется везде, где требуется аутентификация пользователя и/или проверка его прав.


Так же PAM настраивает ограничения (лимиты) пользователей и групп на использование системных ресурсов. Для этого у него есть специальный модуль "Pam Limits", который мы разберем в данной статье.
Также PAM настраивает ограничения (лимиты) пользователей и групп на использование системных ресурсов модулем "'''PAM Limits'''".


Настройка лимитов, накладываемых PAM, хранится в специальном файле конфигурации - /etc/security/limits.conf. Для изменения лимитов нужно отредактировать данный файл.
Настройка лимитов, накладываемых PAM, хранится в специальных файлах конфигурации в каталоге {{path|/etc/security/limits.d/}}.  


Пример файла:
Обычно в данном каталоге уже присутствует конфигурационный файл:
<pre>
<syntaxhighlight lang="bash">
# ls /etc/security/limits.d/
50-defaults.conf
</syntaxhighlight>
 
Для создания новой конфигурации нужно перейти в каталог с настройками и создать новый файл:
<syntaxhighlight lang="bash">
# cd /etc/security/limits.d/
# mcedit 10-user-limits.conf
</syntaxhighlight>
 
Приоритет применения конфигураций идет по убыванию (в лексикографическом порядке):
*от 0 до 9;
*от A до Z;
*от a до z.
 
{{Attention|При создании новых конфигураций рекомендуется давать название соответствующей цели (области) применения, например, {{path|30-cpu-time-limits.conf}}.}}
 
Пример содержимого такого файла:
<syntaxhighlight lang="ini">
# <domain>      <type>      <item>      <value>
# <domain>      <type>      <item>      <value>
  *              soft        core        0
  *              soft        core        0
  user          hard        rss        10000
  user          hard        rss        10000
@student        soft        nproc      50
@student        soft        nproc      50
</pre>
</syntaxhighlight>


В каждом столбце описывается конкретное значение:
В каждом столбце указывается конкретное значение:
*domain - кто из пользователей будет ограничен.
*domain — область действия;
**все - пишем <nowiki>*</nowiki>
*type тип ограничения;
**пользователь - пишем имя - admin
*item — параметр, который нужно ограничить;
**группа - пишем имя группы через собачку - @students
*value — значение.
*type - тип ограничения
**soft - мягкое ограничение, не запрещающее а предупреждающее.
**hard - жёсткое, запрещающее ограничение.


Приложение умеющее обрабатывать soft должно выдать предупреждение, о том что его процесс приблизился к лимиту. А если приложение не умеет обрабатывать soft, то для такого приложения и soft и hard сработают одинаково, то есть не дадут процессу получить запрашиваемый ресурс.
{|class="wikitable" style="float:center; margin-left:2em"
!rowspan="9"|domain
|-
!область<br>действия || описание || пример
|-
|все || звездочка || <nowiki>*</nowiki>
|-
|пользователь || имя пользователя || admin
|-
|группа || название группы через символ at || @students
|-
|группа для <br> параметра maxlogins || название группы через знак процента<br>использование % без указания группы аналогично "maxsyslogins" с * || %buh<br>%
|-
|gid для <br> параметра maxlogins || идентификатор группы через знак процента || %:<gid>
|-
|диапазон uid || диапазон идентификаторов пользователей для ограничения  || <min_uid>:<max_uid>
|-
|диапазон gid || диапазон идентификаторов групп для ограничения || @<min_gid>:<max_gid>
|-
!rowspan="4"|type
|-
!тип ограничения
!colspan="2"| описание
|-
|soft  
|colspan="2"| мягкое ограничение, не запрещающее, а предупреждающее.
|-
|hard  
|colspan="2"| жёсткое, запрещающее ограничение.
|}


*item - В третьей колонке пишется параметр, который нужно ограничить, например:
{{Attention|Приложение умеющее обрабатывать soft должно выдать предупреждение, о том что его процесс приблизился к лимиту. Если нет, то для такого приложения и soft и hard сработают одинаково, то есть не дадут процессу получить запрашиваемый ресурс.}}


{|class="wikitable" style="float:center; margin-left:2em"  
{|class="wikitable" style="float:center; margin-left:2em"  
!colspan="3"|Лимиты
!colspan="3"|Значения item
|-
|-
!Параметр || English || Попытка перевода
!Параметр || English || Комментарий
|-
|-
|core || limits the core file size (KB) || размер core-файлов (KB)
|core || limits the core file size (KB) || ограничение размера файла core (Кбайт)
|-
|-
|data || max data size (KB) || максимальный размер данных (KB)
|data || max data size (KB) || максимальный размер данных (Кбайт)
|-
|-
|fsize || maximum filesize (KB) || максимальный размер файла (KB)
|fsize || maximum filesize (KB) || максимальный размер файла (Кбайт)
|-
|-
|memlock || max locked-in-memory address space (KB) || максимальное заблокированное адресное пространство (KB)
|memlock || max locked-in-memory address space (KB) || максимальное заблокированное адресное пространство (Кбайт)
|-
|-
|nofile || max number of open file descriptors || максимальное количество открытых файлов
|nofile || max number of open file descriptors || максимальное число открытых файлов
|-
|-
|rss || max resident set size (KB) || максимальный размер памяти для резидент-программ (KB);
|stack || max stack size (KB) || максимальный размер стека (Кбайт);
|-
|-
|stack || max stack size (KB) || максимальный размер стэка (KB);
|rss || max resident set size (KB) || максимальный размер памяти для резидент-программ (Кбайт)
|-
|-
|cpu || max CPU time (MIN) || максимальное процессорное время (MIN)
|cpu || max CPU time (MIN) || максимальное время процессора (минуты)
|-
|-
|nproc || max number of processes || максимальное количество процессов;
|nproc || max number of processes || максимальное число процессов (Кбайт)
|-
|-
|as || address space limit (KB) || ограничение адресного пространства (KB);
|as || address space limit (KB) || ограничение адресного пространства (KB)
|-
|-
|maxlogins || max number of logins for this user || максимальное число одновременных регистраций в системе;
|maxlogins || max number of logins for this user || максимальное число одновременных регистраций в системе
|-
|-
|maxsyslogins || max number of logins on the system || максимальное количество учётных записей;
|maxsyslogins || max number of logins on the system || максимальное количество учётных записей
|-
|-
|priority || the priority to run user process with || приоритет запущенных процессов;
|priority || the priority to run user process with ||  приоритет запуска пользовательских процессов
|-
|-
|locks || max number of file locks the user can hold ||  максимальное количество блокируемых пользователем файлов;
|locks || max number of file locks the user can hold ||  максимальное число файлов блокировки
|-
|-
|sigpending || max number of pending signals || максимальное количество сигналов, которые можно передать процессу
|sigpending || max number of pending signals || максимальное количество сигналов, которые можно передать процессу
|-
|-
|msgqueue || max memory used by POSIX message queues (bytes) || максимальный размер памяти для очереди POSIX-сообщений (bytes)
|msgqueue || max memory used by POSIX message queues (bytes) || максимальный размер памяти для очереди POSIX сообщений (байт)
|-
|-
|nice || max nice priority allowed to raise to values: [-20, 19] || максимальный приоритет, который можно выставить: [-20, 19]
|nice || max nice priority allowed to raise to values: [-20, 19] || максимальный приоритет, который можно выставить: [-20, 19]
|-
|-
|rtprio || max realtime priority || максимальный приоритет времени выполнения;
|rtprio || max realtime priority || максимальный приоритет времени выполнения
|}
|}


*value - значение
==Советы по настройке==
 
Запустите все программы, необходимые в работе.
==Советы при настройке==
 
===nofile===
===nofile===
Чтобы узнать, сколько файлов нужно пользователю, установите утилиту lsof.
# apt-get install lsof
Откройте все программы, которые Вам нужны.


Посмотрите количество открытых файлов:
{{Note|
Вам понадобится утилита lsof:
<syntaxhighlight lang="bash">
# apt-get install lsof
</syntaxhighlight>
}}
Для ориентировочной оценки количества открытых файлов выполните команду:
<syntaxhighlight lang="bash">
  $ lsof -u user | wc -l
  $ lsof -u user | wc -l
  5811
  5811
 
</syntaxhighlight>
===nproc===
===nproc===
Чтобы узнать количество запущенных процессов:
Для ориентировочной оценки количества запущенных процессов выполните команду:
*Откройте все программы, которые Вам нужны
<source lang="bash">
*Введите команду:
  $ ps -e | wc -l
  $ ps -e | wc -l
 
</source>
==Конфигурация для настольных систем==
[[Категория:PAM]]
Если у Вас при открытии большого числа приложений возникают проблемы (например, закладки в браузере не загружаются или вызывают сбой, текстовый редактор открывается когда хочет, или вообще не запускается, или вылетает и т.п.), значит у Вас не установлена настройка лимитов для настольных систем. Обычно, в дистрибутивах устанавливаются нормальные лимиты, пригодные для пользователя, но если Вы используете, например, [[Starterkit]], в системе установлен довольно небольшой лимит на количество процессов. Для сервера это оправдано, а графическая среда пользователя плодит их в огромном количестве.
 
Для исправления ситуации, нужно установить пакет pam-limits-desktop:
 
# apt-get install pam-limits-desktop

Текущая версия от 14:44, 26 мая 2023

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Описание

В Linux для аутентификации пользователей используется подсистема — PAM (Pluggable Authentication Modules). PAM используется везде, где требуется аутентификация пользователя и/или проверка его прав.

Также PAM настраивает ограничения (лимиты) пользователей и групп на использование системных ресурсов модулем "PAM Limits".

Настройка лимитов, накладываемых PAM, хранится в специальных файлах конфигурации в каталоге /etc/security/limits.d/.

Обычно в данном каталоге уже присутствует конфигурационный файл:

# ls /etc/security/limits.d/
50-defaults.conf

Для создания новой конфигурации нужно перейти в каталог с настройками и создать новый файл:

# cd /etc/security/limits.d/
# mcedit 10-user-limits.conf

Приоритет применения конфигураций идет по убыванию (в лексикографическом порядке):

  • от 0 до 9;
  • от A до Z;
  • от a до z.
Внимание! При создании новых конфигураций рекомендуется давать название соответствующей цели (области) применения, например, 30-cpu-time-limits.conf.


Пример содержимого такого файла:

# <domain>      <type>      <item>      <value>
 *              soft        core        0
 user           hard        rss         10000
@student        soft        nproc       50

В каждом столбце указывается конкретное значение:

  • domain — область действия;
  • type — тип ограничения;
  • item — параметр, который нужно ограничить;
  • value — значение.
domain
область
действия
описание пример
все звездочка *
пользователь имя пользователя admin
группа название группы через символ at @students
группа для
параметра maxlogins
название группы через знак процента
использование % без указания группы аналогично "maxsyslogins" с *
%buh
%
gid для
параметра maxlogins
идентификатор группы через знак процента %:<gid>
диапазон uid диапазон идентификаторов пользователей для ограничения <min_uid>:<max_uid>
диапазон gid диапазон идентификаторов групп для ограничения @<min_gid>:<max_gid>
type
тип ограничения описание
soft мягкое ограничение, не запрещающее, а предупреждающее.
hard жёсткое, запрещающее ограничение.
Внимание! Приложение умеющее обрабатывать soft должно выдать предупреждение, о том что его процесс приблизился к лимиту. Если нет, то для такого приложения и soft и hard сработают одинаково, то есть не дадут процессу получить запрашиваемый ресурс.


Значения item
Параметр English Комментарий
core limits the core file size (KB) ограничение размера файла core (Кбайт)
data max data size (KB) максимальный размер данных (Кбайт)
fsize maximum filesize (KB) максимальный размер файла (Кбайт)
memlock max locked-in-memory address space (KB) максимальное заблокированное адресное пространство (Кбайт)
nofile max number of open file descriptors максимальное число открытых файлов
stack max stack size (KB) максимальный размер стека (Кбайт);
rss max resident set size (KB) максимальный размер памяти для резидент-программ (Кбайт)
cpu max CPU time (MIN) максимальное время процессора (минуты)
nproc max number of processes максимальное число процессов (Кбайт)
as address space limit (KB) ограничение адресного пространства (KB)
maxlogins max number of logins for this user максимальное число одновременных регистраций в системе
maxsyslogins max number of logins on the system максимальное количество учётных записей
priority the priority to run user process with  приоритет запуска пользовательских процессов
locks max number of file locks the user can hold максимальное число файлов блокировки
sigpending max number of pending signals максимальное количество сигналов, которые можно передать процессу
msgqueue max memory used by POSIX message queues (bytes) максимальный размер памяти для очереди POSIX сообщений (байт)
nice max nice priority allowed to raise to values: [-20, 19] максимальный приоритет, который можно выставить: [-20, 19]
rtprio max realtime priority максимальный приоритет времени выполнения

Советы по настройке

Запустите все программы, необходимые в работе.

nofile

Примечание:

Вам понадобится утилита lsof:

# apt-get install lsof

Для ориентировочной оценки количества открытых файлов выполните команду:

 $ lsof -u user | wc -l
 5811

nproc

Для ориентировочной оценки количества запущенных процессов выполните команду:

 $ ps -e | wc -l