Книга: Linux-сервер своими руками

23.3. Ограничение системных ресурсов

23.3. Ограничение системных ресурсов

Иногда пользователи жалуются, что администраторы сильно «урезают» их права. Однако делается это с благой целью — обеспечить здоровье системы. Например, представьте, что пользователь-вредитель Пупкин запустит такой сценарий:

#!/bin/bash
# Сценарий loop
echo "Бесконечный цикл"
./loop

Этот сценарий выводит строку «Бесконечный цикл», а потом запускает самого себя. Получается что-то наподобие прямой рекурсии. Рано или поздно такой сценарий использует все системные ресурсы, и при запуске полезного процесса вы получите сообщение: Unable to fork

То есть невозможно создать процесс. Этого можно легко избежать, если вы определите параметр nproc в файле /etc/security/limits.conf. В файле limits.conf задаются ограничения ресурсов системы для пользователя или группы пользователей. Формат файла таков:

<domain> <type> <item> <value>

Первое поле (domain) может содержать:

1. Имя пользователя.

2. Имя группы. Перед именем группы нужно указать символ «@».

3. Символ «*». Данное ограничение будет ограничением по умолчанию.

Второе поле (type) — это тип ограничения: мягкое (soft) или жесткое (hard). Мягкое ограничение определяет число системных ресурсов, которое пользователь все еще может превысить, жесткое ограничение превысить невозможно. При попытке сделать это, пользователь получит сообщение об ошибке. Что касается элемента ограничения (item), то им может быть:

core — ограничение размера файла core (Кб).

data — максимальный размер данных (Кб).

fsize — максимальный размер файла (Кб).

memlock — максимальное заблокированное адресное пространство (Кб).

nofile — максимальное число открытых файлов.

stack — максимальный размер стека (Кб).

cpu — максимальное время процессора (минуты).

nproc — максимальное число процессов.

as — ограничение адресного пространства.

maxlogins — максимальное число одновременных регистрации в системе.

locks — максимальное число файлов блокировки.

Рассмотрим несколько примеров. Например, нам нужно установить максимальное число процессов для пользователя user. Это можно сделать с помощью таких записей:

user soft nproc 50
user hard nproc 60

 Первая строка определяет мягкое ограничение (равное 50), а вторая — жесткое.

Допустим, у вас есть группы dialup1 и dialup2. В каждую группу входят 30 пользователей. При этом у вас есть всего 30 входящих линий, поэтому нужно обеспечить одновременную работу не более 15 пользователей из каждой группы. Это делается так:

@dialup1 - maxlogins 14
@dialup2 - maxlogins 14

В первом и втором случае из каждой группы пользователей одновременно работать смогут не более 15 (maxlogins 14 — отсчет начинается с нуля). При регистрации шестнадцатый пользователь увидит сообщение:

Too many logins for 'dialup1'

Иногда бывает полезным ограничить самого себя, то есть пользователя root. Рассмотрим, как это сделать. В файле /etc/securetty, который уже упоминался выше, указываются терминалы и виртуальные консоли, из которых может регистрироваться пользователь root. Я рекомендую вообще запретить регистрацию пользователя root из консоли. Для этого удалите (или закомментируйте) все строки в файле /etc/securetty. Если вам будут нужны максимальные привилегии, используйте команду su (super user). После ввода этой команды, программа запросит у вас пароль пользователя root, и если пароль правилен, вы получите привилегии пользователя root.

Оглавление книги


Генерация: 1.461. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз