Документация по ОС FreeBSD Пятница, 19.04.2024, 10:19
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

RACCT на практике [2012]
В FreeBSD 9.0 появился новый механизм управления доступом к ресурсам системы — демон racctd. Для управления существует утилита rctl. По умолчанию механизм выключен, для активации необходимо добавить в конфигурационный файл ядра следующие стрроки:
 
options RACCT
options RCTL
 
После пересборки и загрузки с новым ядром запускается демон racctd. Управляющая им утилита rctl позволяет просмотреть список правил (все или с фильтрами)., очистить правила, добавить новое правило. Синтаксис правила имеет вид:
 
subject:subject-id:resource:action=amount/per
 
subject — субъект правила, может быть:
  • process,
  • user,
  • loginclass,
  • jail. 
subject-id — идентификатор субъекта:
  • имя пользователя либо его ID в системе,
  • имя класса,
  • имя jail. 
resource — тип контролируемого ресурса, может быть:
  • cputime —  время CPU в секундах (толку от этого ресурса мягко говоря не много, поскольку доступен только для чтения, например, в контексте «добавить в лог запись, если пользователь занял более 2 секунд процессорного времени),
  • datasize — используемые данные, в байтах, причем какие именно данные известно одному разработчику,
  • stacksize — размер стека в байтах, как правило равен 0
  • coredumpsize — размер файла дампа в байтах, если установка в 1 байт реально запрещает приложениям создавать дампы, то это замечательно, но стоило ли ради этого писать целый racctd,
  • memoryuse — количество используемой памяти в байтах, это более-менее соответствует истине,
  • memorylocked — количество блокируемой памяти в  байтах, как правило для пользовательских процессов равно 0,
  • maxproc- количество процессов — единственный полезный ресурс, ограничение реально работает
  • openfiles — размер таблицы файловых дескрипторов, кстати тоже преимущественно 0, отдаленно напоминает ужасные квоты, но там оно хотя бы работало,
  • vmemoryuse — количество виртуальной памяти в байтах, сомнительно, что имеет смысл ограничивать,
  • pseudoterminals количество псевдотерминалов PTYs, что является терминалом в контексте автора непонятно, обычные логины в консолях псевдотерминалами с точки зрения racctd не являются,
  • swapuse — размер файла подкачки в байтах, тоже сомнительный ресурс, даже несмотря на тот факт, что при исчерпании резервированного файла подкачки FreeBSD становиться неуправляемой,
  • nthr — количество потоков, как правило совпадает в количеством процессов,
  • msgqqueued — количество очередей SysV сообщений,
  • msgqsize — размер сообщения SysV в очереди в байтах,
  • nmsgq — количество сообщений SysV в очереди ,
  • nsem — количество SysV семафоров,
  • nsemop — количество SysV семафоров semaphores, преобразуемых в один semop вызов
  • nshm — количество SysV общих сегментов памяти
  • shmsize — размер SysV общего сегмента памяти в байтах,
  • wallclock в секундах. 
action — определячет действие при выполнения условия правила, может быть:
  • deny  - запрет выделения ресурса, неприменимо для ресурсов cpu и wallclock,
  • log — вывод сообщения в консоль (и в файл лога по умолчанию),
  • devctl — отправка сообщения для devd,
  • sig* или sigterm —  послать сигнал  превысившему ограничение процессу.
 
Указывать /per  можно при описании класса пользователей, например:
 
loginclass:customrs:memoryuse:deny=200m/user
 
В случае ограничения  конкретного пользователя:
 
user:joe: maxproc:deny=25

Если нужно только фиксировать превышение, необходимо действие log
 
user:joe: datasize:log=26m

Тогда при превышении лимита в файле лога появится сообщение вида
 
Jan 16 12:22:59 test kernel: rctl: rule "user:1001:datasize:log=27262976" matched by pid 1770 (ubench), uid 1001, jail 0

При одновременном наличии правил log и deny первым срабатывает запрет и запись в логе не появляется, хотя при просмотре правил логирование раньше
 
# rctl -h
 user:joe:maxproc:log=25
 user:joe:maxproc:deny=25

Полный отчет по ресурсам можно посмотреть так:
 
# rctl -hu user:joe
 cputime=853
 datasize=24M
 stacksize=0
 coredumpsize=0
 memoryuse=54M
 memorylocked=0
 maxproc=14
 openfiles=0
 vmemoryuse=562M
 pseudoterminals=0
 swapuse=0
 nthr=14
 msgqqueued=0
 msgqsize=0
 nmsgq=0
 nsem=0
 nsemop=0
 nshm=0
 shmsize=0
 wallclock=81k


Источник: http://myfreebsd.ru/overview/racct-na-praktike
Категория: Установка и настройка | Добавил: oleg (28.01.2012)
Просмотров: 1082 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024